[ArrayManager] Array version of fillna logic
xref https://github.com/pandas-dev/pandas/issues/39146

I was looking into getting rid of the Block fallback (`apply_with_block`) for `fillna` in ArrayManager. For that, I started with putting the bits and pieces from the several BlockManager methods (the different `fillna` implementations, maybe_downcast) together in a function that would do the same for plain arrays as input, to see what this would give.

The draft result of that can be seen in this PR. This seems to pass all tests for the ArrayManager, so should have the same behaviour as BlockManager.fillna. I only hoped that we could then also use this in the BlockManager to have a shared implementation (as we did for eg `Block.astype` and others). However, that doesn't seem so easy in this case .. So not yet sure how to best proceed here.