BUG: is_scalar_indexer
- [ ] closes #xxxx
- [x] tests added / passed
- [x] passes `black pandas`
- [x] passes `git diff upstream/master -u -- "*.py" | flake8 --diff`
- [ ] whatsnew entry

ATM we go through the wrong path when setting a listlike entry in a single position.

The broader goal: separate out the cases where setitem is inplace vs copying.
Is there an actual bug that this fixes? (do you have an example with indexing that now did the wrong thing?) > Is there an actual bug that this fixes? (do you have an example with indexing that now did the wrong thing?)

Nothing user-facing, just an unnecessary failed-cast:

```
df = DataFrame(index=[0, 1], columns=[0])
df.iloc[1, 0] = [1, 2, 3]
```

ATM this incorrectly doesnt see the indexer as a scalar-indexer, but does see this (also incorrectly) as an `exact_match`, so goes through the try/except in L906-909.  This is why the try/except is needed in the first place.