Add checks to chart components on init.

Check for components that should never
be None and check for components that
should be of a numeric type.
Merge pull request #258 from cosinequanon/guard_chart_components_is_255

Add checks to chart components on init.
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 :-(
Get geoms to accept dataframes

**Notes**

- Introduced a lot of duplicate code for grouping in the geoms
Cut down on code duplication in the geoms

- Added helper function in the `geom` base class to do the grouping.
- Grouping uses a `_groups` class variable declared by the geoms
- Move plot_layer to the `geom` base class and group the data before
  it is passed on to `geom_xxx.plot`
- Translations to matplotlib names also happens in the `geom`
  base class
Attempt at better variables names

geom.plot         -> geom._plot_unit
geom._translation -> geom._aes_renames
layer             -> pinfo                 # (parameter to geom.plot)
geom._rename_aes  -> geom._do_aes_renames

**Also**
- Make `colour -> color` the only automatic renaming
Python round() to numpy.round()

`round()` changed between python 2 and 3

**Problematic outcome**
A testcase with different axes for python 3 compared to python 2
and so could not agree across versions.

**Solution**
`numpy.round()`
Specify the default aesthetics for the geoms

**stuff done**
- geom.DEFAULT_AES a dict with the default values for the
  aesthetics
- geom.plot_layer to handle per geom manual aesthetics and
  have them override those in ggplot.
- save test result images that are more representative of
  of the desired outcome.
- Add a missing __future__ import for py3 compatibility.
- removed ggplot._get_layers, I had forgotten about it.