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)