CLN: Cleanup plotting submodule
- Make `plotting` as subpackage
  - Split utility functions / non- `MPLPlot` classes to other files.
- Move tests under `plotting/*`
  - Add small unit tests to guarantee utility function APIs.
- Refactor `MPLPlot` class properties. Because `MPLPlot` now has lots of properties, split them to  `FigureProperties` and `AxesProperties` classes and delegates the logic.

This should makes #12547, #7670, #8018 easier.
