REGR: fix pd.cut with datetime IntervalIndex as bins
Closes #46218

xref https://github.com/pandas-dev/pandas/issues/46218#issuecomment-1073362376 for the actual reason that causes `cut` to fail: inside the implementation, we convert the actual timestamp data to floats (to pass to the underlying algorithm), but then when passing those values to `IntervalIndex.get_indexer`, those numeric values no longer "match" with the datetime64 interval dtype. And in theory, `get_indexer` should then fail (return -1 for not finding the target values), but until https://github.com/pandas-dev/pandas/pull/42227 this actually happily worked (and therefore also let `cut` with datetime64 interval bins work).

This PR doesn't solve the root cause (we should change the logic inside `cut` so that we don't create this mismatch in values vs bins), but it is a short-term fix of the regression. It basically reverts the (unintended, I think) behaviour change introduced by https://github.com/pandas-dev/pandas/pull/42227, but without actually reverting that PR (I am keeping the refactor introducing `_should_partial_index` of that PR, but I am only changing `_should_partial_index` itself a little bit to match better with what happened before in practice). 

I will open a separate issue about the issue in `cut` and that we should make `IntervalIndex.from_indexer` more strict. (opened -> https://github.com/pandas-dev/pandas/issues/47772)
> I will open a separate issue about the issue in `cut` and that we should make `IntervalIndex.from_indexer` more strict. (opened -> #47772)

is that the preferred longer term fix and this a targeted PR for backport?  > is that the preferred longer term fix and this a targeted PR for backport?

That's indeed the preferred long term to change that behaviour, and this PR restores the behaviour for both `cut` as `IntervalIndex.get_indexer`. 
Note there is also https://github.com/pandas-dev/pandas/pull/47773 which only fixes `cut`, and something we should also do anyway. But since this PR also restores the behaviour of `get_indexer` (which is strictly speaking public), I think this one is good to include for 1.4.x, and we can then also merge  https://github.com/pandas-dev/pandas/pull/47773 for main as well. Thanks @jorisvandenbossche merging on green