BUG: Repeated time-series plot causes memory leak
Closes #9003, Closes #9307. 
- Not to clutter plot functions outside of classes.
- Changed to use classmethods rather than closures for plot funcs. 
- Not cache plot function itself on `ax._plot_data`. Changed to store `str` indicates plot kind.
- Moved `tsplot` related codes to `tseries.plotting.py`.

Because the change is little big, I think it is better to wait until 0.17. Further simplification seems to be possible if we can remove `tsplot` as not public function.

CC: @qwhelan, @TomAugspurger 

I moved this to 0.17.0, but can consider for 0.16.1 if warranted
 @sinhrks Thanks for cleaning this up - looks good to me and I'd agree on waiting till 0.17
 Being a n00b, not sure how to report this better: I think there is a misprint in the patch. In pandas/tseries/plotting.py line 45:

```
    freq, eries = _maybe_resample(series, ax, kwargs)
```

should be:

```
    freq, series = _maybe_resample(series, ax, kwargs)
```

Thank you for the amazing tool, and for keeping making it better!
 @anton-molyboha Thanks for correction! Fixed this, and will add further tests by 0.17. 
 Rebased, and added some tests for @qwhelan 's point. I think it's ready for review.
 @sinhrks can you rebase / update?
 OK, rebased.
 @TomAugspurger @jreback Pls take a look when you have a time.
 Just gave a read through. This is touching a lot of code, but I didn't see any big problems. Let's hope our tests are good enough. I'd say merge it when your ready.
 Thanks for review! Merging.
