CLN/DOC: Interval and IntervalIndex classes
Progress towards #16130
- [X] passes `git diff upstream/master -u -- "*.py" | flake8 --diff`

Changes shouldn't impact the behavior of `Interval` or `IntervalIndex`:
- Restructured the `IntervalMixin` class, as it was using legacy syntax for defining properties ([see here](http://cython.readthedocs.io/en/latest/src/userguide/extension_types.html#properties))
- Added docstrings to various `Interval` and `IntervalIndex` methods and attributes
- Replaced `%` syntax with `.format`
- Minor variable renaming for additional clarity, e.g. `l` -> `lhs`
   - My linter was complaining PEP 8 (E741): ambiguous variable name 'l'

# [Codecov](https://codecov.io/gh/pandas-dev/pandas/pull/18585?src=pr&el=h1) Report
> Merging [#18585](https://codecov.io/gh/pandas-dev/pandas/pull/18585?src=pr&el=desc) into [master](https://codecov.io/gh/pandas-dev/pandas/commit/1eedcf664cab1ca23a1d10071b2b7fb8095d0160?src=pr&el=desc) will **decrease** coverage by `0.04%`.
> The diff coverage is `80.64%`.

[![Impacted file tree graph](https://codecov.io/gh/pandas-dev/pandas/pull/18585/graphs/tree.svg?src=pr&height=150&width=650&token=eZ4WkYLtcO)](https://codecov.io/gh/pandas-dev/pandas/pull/18585?src=pr&el=tree)

```diff
@@            Coverage Diff             @@
##           master   #18585      +/-   ##
==========================================
- Coverage   91.44%    91.4%   -0.05%     
==========================================
  Files         157      157              
  Lines       51378    51379       +1     
==========================================
- Hits        46985    46964      -21     
- Misses       4393     4415      +22
```

| Flag | Coverage Δ | |
|---|---|---|
| #multiple | `89.27% <80.64%> (-0.03%)` | :arrow_down: |
| #single | `40.57% <9.67%> (-0.11%)` | :arrow_down: |

| [Impacted Files](https://codecov.io/gh/pandas-dev/pandas/pull/18585?src=pr&el=tree) | Coverage Δ | |
|---|---|---|
| [pandas/core/indexes/interval.py](https://codecov.io/gh/pandas-dev/pandas/pull/18585/diff?src=pr&el=tree#diff-cGFuZGFzL2NvcmUvaW5kZXhlcy9pbnRlcnZhbC5weQ==) | `93.05% <80.64%> (-0.17%)` | :arrow_down: |
| [pandas/io/gbq.py](https://codecov.io/gh/pandas-dev/pandas/pull/18585/diff?src=pr&el=tree#diff-cGFuZGFzL2lvL2dicS5weQ==) | `25% <0%> (-58.34%)` | :arrow_down: |
| [pandas/plotting/\_converter.py](https://codecov.io/gh/pandas-dev/pandas/pull/18585/diff?src=pr&el=tree#diff-cGFuZGFzL3Bsb3R0aW5nL19jb252ZXJ0ZXIucHk=) | `63.44% <0%> (-1.82%)` | :arrow_down: |
| [pandas/core/frame.py](https://codecov.io/gh/pandas-dev/pandas/pull/18585/diff?src=pr&el=tree#diff-cGFuZGFzL2NvcmUvZnJhbWUucHk=) | `97.81% <0%> (-0.1%)` | :arrow_down: |

------

[Continue to review full report at Codecov](https://codecov.io/gh/pandas-dev/pandas/pull/18585?src=pr&el=continue).
> **Legend** - [Click here to learn more](https://docs.codecov.io/docs/codecov-delta)
> `Δ = absolute <relative> (impact)`, `ø = not affected`, `? = missing data`
> Powered by [Codecov](https://codecov.io/gh/pandas-dev/pandas/pull/18585?src=pr&el=footer). Last update [1eedcf6...7907e68](https://codecov.io/gh/pandas-dev/pandas/pull/18585?src=pr&el=lastupdated). Read the [comment docs](https://docs.codecov.io/docs/pull-request-comments).
 nice!

> My linter was complaining PEP 8 (E741): ambiguous variable name 'l'

yeah this is in the newest flake8, we are currently pinning on travis, there is an issue about this, so thanks for changing!