CLN: BlockManager.get_slice require only slice arg
- [ ] closes #xxxx
- [ ] tests added / passed
- [ ] Ensure all linting tests pass, see [here](https://pandas.pydata.org/pandas-docs/dev/development/contributing.html#code-standards) for how to run them
- [ ] whatsnew entry

non-slice objects are currently getting past mypy.  This ensures we only get slices, will open up some optimization options.

Also did some docstring/typing cleanup in the neighborhood.

<b>update</b>: updated to implement Index._getitem_slice.  Cuts about 10% off of the benchmark discussed in https://github.com/pandas-dev/pandas/pull/40171#issuecomment-790219422 (as compared to current master, not then-master)
> this is quite a lot of added code paths in index, are these really all tested?

yes ok looks fine. we have sufficient asv's to cover? (assume we do) > we have sufficient asv's to cover? (assume we do)

yes.  this is motivated by the one discussed in joris's libreduction PR lgtm. can you rebase & ping on green. Ping