ENH: When using another plotting backend, minimize pre-processing
- [ ] closes #xxxx
- [ ] tests added / passed
- [x] passes `black pandas`
- [x] passes `git diff upstream/master -u -- "*.py" | flake8 --diff`
- [ ] whatsnew entry

I ran into this while implementing the hvplot backend. In hvplot you can do:

```python
df.hvplot.hist(y='y', by='category')
```

but with the pandas version 

```python
pd.options.plotting.backend= 'holoviews'
df.plot.hist(y='y', by='category')
```

 will fail because `data = data[y]`  is called before the plotting is passed off to the backend. 

Basically it seems like backend writers should be free to get the passed pandas objects with as little interference as possible.

