ENH: support per-axis, per-level indexing with loc[]

CLN: add comments in indexing code

CLN: comment out possibly stale kludge fix and wait for explosion

CLN: Mark if clause for handling of per-axis tuple indexing with loc

PERF: vectorize _spec_to_array_indices, for 3-4x speedup

PERF: remove no longer needed list conversion. 1.4x speedup
CLN: move indexing loc changes to index.py
TST: tests for per_axis_per_level_getitem
ENH: add core/indexing.py/_getitem_nested_tuple to handle the nested_tuple cases for partial multi-indexing
ENH: allow core/index/_get_loc_level to deal with a slice indexer for a particular level
ENH: remove get_specs/specs_to_index -> replace with get_locs, to directly compute
     an indexer for a multi-level specification
ENH: allow per_axis, per_level multiindex setting

TST: better error messages when levels are not sorted with core/index/get_locs

ENH: add boolean indexer support on per_axis/per_level

BUG: handle a multi-level indexed series passed like with a nested tuple of selectors
     e.g. something like: s.loc['A1':'A3',:,['C1','C3']]
DOC: v0.14.0 and indexing doc updates for mi slicing

DOC: release notes and issues for mi_slicing
BUG: Raise a TypeError when trying to assign with a rhs of a multi-index of differeing levels (GH3738)
API: add in IndexSlice indexer shortcut
ENH: make it possible to pass keyword argument to .loc
ENH: allow the axis keyword to short-circuit indexing
Merge pull request #6301 from jreback/mi_indexing

ENH: per axis and per level indexing (orig GH6134)