WIP: Proper scales

Covers #283 and touches on stuff discussed in #259 and #221.

This is a complete rewrite of the plotting pipeline so as to not to violate the [layered-grammar](http://vita.had.co.nz/papers/layered-grammar.pdf). As such there is a close adherence to the ggplot2 plot building pipeline.

It is far from being done, the following need to be addressed:
- [ ] scale transformations e.g. `log10, sqrt` (concerns in #283)
- [ ] matplotlib subplotting stuff
- [ ] Legend
- [ ] Comprehensive tests