API: change ExtensionArray.astype to always return an ExtensionArray
Closes #24877

This is a work-in-progress to see if it's realistic to require `ExtensionArray.astype` to always return an ExtensionArray (in practice this means returning a PandasArray if now a numpy array would be returned). 

Further we will also need to see how this impacts external EAs, and how this change can be managed.

(datetimelike and categorical arrays were not yet updated)