Refactor string methods for StringArray + return IntegerArray for numeric results
Intended as an alternative to https://github.com/pandas-dev/pandas/pull/29637.

This is a much smaller change. It only changes the codepath for StringDtype.
I think this is OK since someday (well down the road) we'll want to deprecate
the `.str` accessor on object-dtype Series. When we enforce that, we can just
delete the entire old implementation.

The API change is limited to always returning Int64Dtype for numeric outputs, rather than int if there's no NAs and float if there are any.
When BoolArray is done, we'll change that for the boolean-returning ones.

As a side benefit, we get a nice perf boost, since we have deterministic output dtypes we
can skip an object-dtype allocation.

```python
In [2]: s = pd.Series(['a'] * 100_000 + [None], dtype="string")

In [3]: t = s.astype(object)

In [4]: %timeit s.str.count("a")
50.7 ms ± 2.21 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)


In [5]: %timeit t.str.count("a")
62.7 ms ± 742 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)
```
> As a side benefit, we get a nice perf boost

Maybe a copy paste error, but the example doesn't show much performance boost :) (less than a percent) This looks good to me! I suppose this is simpler than your other PR Is this time-sensitive or can i wait and look at it on Monday? No rush on this.

I did fail on the copy paste. The speed up is about 15% IIRC.  Just the clipboard failure: https://github.com/pandas-dev/pandas/issues/29676 CI failure is from https://github.com/pandas-dev/pandas/issues/29514 Thanks for the review. Addressed all the comments I think.

After this, I'll have a small change at https://github.com/pandas-dev/pandas/pull/29597 to get it using the new methods (there's some no unnecessary changes in https://github.com/pandas-dev/pandas/pull/29597 that need to be removed). Just the clipboard CI failure again. @jreback thoughts on the conversation around the signatures? I think this is slightly blocking the pd.NA PR now. 

> On Nov 19, 2019, at 06:01, Joris Van den Bossche <notifications@github.com> wrote:
> 
> ﻿
> @jorisvandenbossche approved this pull request.
> 
> —
> You are receiving this because you authored the thread.
> Reply to this email directly, view it on GitHub, or unsubscribe.
 Merged master, and writing up an issue for the followup. https://github.com/pandas-dev/pandas/issues/29710 for followup. Thanks all!