API/TST: Call __finalize__ in more places
Progress towards https://github.com/pandas-dev/pandas/issues/28283. This
adds tests that ensures `NDFrame.__finalize__` is called in more places.
Thus far I've added tests for anything that meets the following rule:

> Pandas calls `NDFrame.__finalize__` on any NDFrame method that returns
> another NDFrame.

I think that given the generality of `__finalize__`, making any kind of
list of which methods should call it is going to be somewhat arbitrary.
That rule errs on the side of calling it too often, which I think is my
preference.

*For reviewers* I think the two most helpful pieces would be

1. Do you agree with the general rule of `NDFrame -> NDFrame` should call `__finalize__`?
2. A spot check on the tests I've added

If you don't agree with the general rule, then we'll need to go through method by method and determine whether that method should call `__finalize__`. 

Once we have agreement that the tests I've added accurately reflect the desired outcome, this can be merged and we can fix `xfails` in smaller batches.
CI has finished here, just hasn't updated on the UI.

On the call yesterday, people generally seemed OK with the rule that methods returning NDFrames should call `__finalize__`.

Does anyone have issues with the structure of the `finalize` test (parametrize over constructor, constructor args, and method)? Or are we OK to move ahead here?

If so, I'll start to work on the xfails (methods that don't yet call `__finalize__`) nice work @TomAugspurger 