Add documentation for scale_colour_gradient
Merge pull request #242 from naught101/master

Add documentation for scale_colour_gradient
pyplot removal: use axis in plot_layer methods

As a first step to remove the pyplot interface, all
plot_layer methods in the geoms now need a ax
argument and use that to plot instead of the pyplot
interface.
FIX: rename faceting variables (width -> rows, height -> cols)

The meaning of this variables was swihced. Rename them to fit
their use!
FIX: don't turn off the first axis in some cases

The first axis was turned off when the number of axis was
a square and exactly the number of preallocated axis. The
trigger seems to be that [1,2,3][-0:] will return the whole
list but [1,2,3][-x:] only the last x element (the algo
expected that [..][0] returns an empty list). Why only the
first axis was turned off and not all of them and only
when the number of axis was a sqaure: i don't know :-(
AESTHETICS lists as sets

**Issue**
AESTHETICS variables in ggplot and the geoms are
declared as lists.

**Problem**
The AESTHETICS variables are also used as tables for
lookup. This leads to unnecessary list travesal, an
O(n) operation.

**Solution**
Use sets.

**Fix tests**

Fix stat_bin2d test

Previous test depended on the generated layer order generated
by ggplot._get_layers().
Rename geom_*.plot_layer & create geom.plot_layer

Go through the geom base class, and do the
common preprocessing steps. Reduces code duplication
througout the geoms.
Better geom arguments and try to match ggplot2 api

**What happened**

- Try to match ggplot2 api using VALID_AES, REQUIRED_AES
  and PARAMS geom class variables.
- Introduce geom.params to hold the none aesthetic
  geom parameters
- Introduce TRANSLATIONS geom class variable to help
  automate the renaming between ggplot2 API aesthetics
  names and matplotlib plotting arguments.
- Strip duplicate code from the geoms and remove
  unused imports
- Fix up a few tests to match the changes.