BUG: indexing changes to .loc for compat to .ix for several situations
handle iterator
handle NamedTuple
.loc retuns scalar selection dtypes correctly, closes #11617

xref #15113

I pulled these out of #15113 to make that a tiny bit cleaner (it will *only* be deprecations, no fixes now). and needed a tiny refactor to handle some slight differences between ``.ix`` and ``.loc``