POC: Implement pythonic label-based index slicing NDFrame.slice(closed='left')
**Note**: this began as a POC for an additional indexer `loc_left`, which has now been updated to become the low-level API used for providing the `NDFrame.slice` functionality.

WIP/POC for #27059. In short, `loc` was designed with unpythonic right-inclusive semantics, and for dubious considerations. It would be an improvement to treat slicing as taking a `closed` argument, as many pieces of pandas functionality do, such as `Rolling`, `Interval`.

- Adds a `loc_left` indexer to complements `loc`. This could be made private.
- Adds an `NDFrame.slice` method is discussed in #27059 which mimics python's `slice` signature, with the addition of a `closed` keyword. The default is 'left' to match pythonic convention.
- The indexer reuses the loc machinery with very few changes, and passes a test suite which augments the existing tests for loc.

- [X] implement and test `loc_left[]`
- [X] implement and test `slice(closed=left/both)`
- [ ] implement and test `slice(closed=right/neither)`

**Note**: #27209 by @simonjayhawkins enhances `IndexSlice` with a `closed` argument instead of introducing a new indexer. `slice` could be adapted to make use of that if desired. 

Examples:
```text
In [6]: import pandas as pd
   ...: ix= pd.DatetimeIndex(["2001-01","2001-01","2001-02","2001-02","2001-03","2001-03"])
   ...: df=pd.DataFrame(dict(a=range(6)),index=ix)
   ...: df
Out[6]: 
            a
2001-01-01  0
2001-01-01  1
2001-02-01  2
2001-02-01  3
2001-03-01  4
2001-03-01  5

In [7]: df.slice("2001-03")
Out[7]: 
            a
2001-01-01  0
2001-01-01  1
2001-02-01  2
2001-02-01  3

In [8]: df.slice("2001-03", closed="right")
Out[8]: 
            a
2001-01-01  0
2001-01-01  1
2001-02-01  2
2001-02-01  3
2001-03-01  4
2001-03-01  5

In [9]: df.slice("2001-02", "2001-03")
Out[9]: 
            a
2001-02-01  2
2001-02-01  3

In [10]: df.slice("2001-02", "2001-03",closed="right")
Out[10]: 
            a
2001-02-01  2
2001-02-01  3
2001-03-01  4
2001-03-01  5

In [11]: df.slice("2001-01", "2001-03",step=2)
Out[11]: 
            a
2001-01-01  0
2001-02-01  2

In [12]: df.slice("2001-01", "2001-03",step=2, closed="right")
Out[12]: 
            a
2001-02-01  2
2001-03-01  4
```