REF: setitem_with_indexer DataFrame always go through split_path
Still has some rough edges to round off, but putting it up bc i think it might be relevant for some of @jorisvandenbossche 's issues in getting AM behavior to match BM.

Sits on top of #39510
(@jorisvandenbossche if you were so inclined to make a copy-pasteable one-liner to run the relevant array-manager tests (could put it in the Makefile?) that'd make my life marginally better) > Can you give a high-level summary of the changes?

ATM `iloc.__seitem__` (and through it, `loc.__setitem__`) go through different code paths depending on whether there is more than 1 Block (or if there is ArrayManager).  These code paths have different behaviors w/r/t copy/view semantics.

This PR does 2 things:

1) Have all 2D cases go through the "split" path that currently only multi-Block cases go through.

2) Within that split path, use try-inplace-fallback-to-cast behavior intended to match the non-split case. This pull request is stale because it has been open for thirty days with no activity. Please update or respond to this comment if you're still interested in working on this. @jbrockmendel there are now some conflicts here to resolve Hello @jbrockmendel! Thanks for updating this PR. We checked the lines you've touched for [PEP 8](https://www.python.org/dev/peps/pep-0008) issues, and found:





















There are currently no PEP 8 issues detected in this Pull Request. Cheers! :beers: 

##### Comment last updated at 2021-11-30 04:09:54 UTC rebased, have a couple test failures i need to figure out still status? > status?

One case that is still failing; I'm optimistic #43632 will make it easier to fix. Mothballing while troubeshooting locally.