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'
