REF: de-nest Series getitem/setitem checks
ATM the first checks we do in `Series.__getitem__` and `__setitem__` are for `get_loc` with some not-totally-straightforward try/except logic.

This moves the slice case and the com.is_bool_indexer case up, and aligns the ordering of the checks between getitem/setitem.

Getting the com.is_bool_indexer case out from the try/except in setitem is particularly nice.

That said, this _may_ not be what we want to do.  This will very slightly improve performance in the cases moved up, and equally slightly harm performance in the scalar case.  AFAIK the current ordering is not based on optimizing one case over the others.