REF: share ArrayManager/BlockManager methods
- [ ] closes #xxxx
- [ ] tests added / passed
- [ ] Ensure all linting tests pass, see [here](https://pandas.pydata.org/pandas-docs/dev/development/contributing.html#code-standards) for how to run them
- [ ] whatsnew entry

@jbrockmendel I don't think moving those to the base class really helps (also design-wise, the base class shouldn't know about blocks). All those case of "apply_with_block" in ArrayManager are actually cases that still need to be fixed to not use the "fallback" of blocks. So I would rather leave them there as is. @jorisvandenbossche my thought here is that the apply_with_block is temporary and these will gradually be changed into just using `self.apply` (like astype and to_native_types), and that in the interim we get the normal benefits of code de-duplication.

If you feel strongly about it, im not inclined to press the point. > my thought here is that the apply_with_block is temporary and these will gradually be changed into just using self.apply (like astype and to_native_types), 

But it's not a given that at that point it will be possible to share the method. For example astype and to_native_types are not actually shared (eg `self.apply("astype", ..)` vs `self.apply(astype_array_safe, ...)`). 

So I would rather decide about sharing or not *when* doing the change to remove `apply_with_block`.