API: dispatch to EA.astype
Closes https://github.com/pandas-dev/pandas/issues/21296

split from https://github.com/pandas-dev/pandas/pull/22325

Note that this is just a partial fix to get sparse working. We have some issues:

for better or worse, categorical is still special cased. `Series[EA].astype('category')` will not yet dispatch to `EA.astype`. That's good non-pandas EAs won't have to worry about specially handling categorical. It's bad, since it's a special case.

And that's the second issue, in general, how should we handle astyping from EA1 -> EA2? In principle, we always have `ndarray[object]` as the lowest common denominator. So something like `EA2(EA.astype(object))` may work. But that won't necessarily be efficient. I'm not sure what's best here.

cc @xhochy 