PLOT: Split matplotlib specific code from pandas plotting
- [X] xref #14130
- [ ] tests added / passed
- [ ] passes `git diff upstream/master -u -- "*.py" | flake8 --diff`
- [ ] whatsnew entry

In order to be able to change pandas plotting backend, I think we need 3 main things:
1. Decouple the current matplotlib backend from the pandas plotting system, and just call it using a defined public API
2. Implement an option to select the backend (e.g. `pandas.set_option('plotting.backend', 'pandas.matplotlib')`)
3. Have other alternative backends which define the same API as the current matplotlib one

This PR is splitting most of the matplotlib backend code into a new `_matplotlib.py` file. Some matplotlib code still lives in `plotting/_core.py`, but would be nice to have early feedback on whether everybody is happy with this approach before moving forward. CC: @jreback @TomAugspurger 