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.
Merge pull request #252 from has2k1/refactor-layers-like-ggplot2

WIP: Refactor layers like ggplot2

Closes: #221
Closes: #160
bump version
changelog
Update scale_y_continuous.py

Parameter 'labels' can be used to manually designate labels in R.
Merge pull request #264 from Xbar/patch-1

Update scale_y_continuous.py
WIP

Refactor ggplot, theme, and complete theme subclasses
* set default theme to theme_gray()
* use explicit api to callback to theme for applying rcParams and post_plot_callbacks
* remove __radd_ from theme subclasses
  this is pretty messy to get right better that it is only defined in the superclass due to the
  way python decides what to call when __add__, __radd__ are available for parent and child classes

Get the basic adding semantics of ggplot + theme and theme + theme
* Add element_text for themeing text
* themes can be combined iff compined in the correct order
  eg. axis_text + axis_text_x will work as expected but
      axis_text_x + axis_text will not.
* only theming text related to axis
* todo
  * more theme elements
  * more theme targets
  * proper combination of theme elements

More text theming added

TODO:
* complete rest of themes
* implement correct order of theme application regardless of theme construction
* fix python3 print error
* update images that were failing tests
rename module text to element_text
refactor element_text, move targets to the element and
create classes to handle configuration at the proper scope.
Fix python3 test fail
Sort element targets so themes are applied in proper order.