Added plotly_utils.clean_dict(). Removes None. 'None', 'none', and {}.

JSON dictionaries sent to plotly should not have entries that contain
'none', 'None', None, or are themselves empty dictionaries ({}). This
should be updated at some point to disregard entries that are expected
to be labels so that users could use 'None' or 'none' to label a plot.
This is pretty unlikely, but should be changed.

clean_dict(node, partent=None, node_key=None) is a recursive function to
clean out a dictionary. Only nodes that are dictionaries are looped back
through the function. The JSON structures are dictionary-based, while
matplotlib structures are lists, no unintentional deletion problems have
surface yet.
Added user_friendly dictionary repair functions to plotly_utils.

There are many situations where and 'x1', 'y1', 'xaxis1', etc. show up
in the final collections for layout or data.

To make future fixes simpler the following system was put in place:

- To rename a key add the following to the *_key_repairs dict:
(key_path_tup): new_key

- To repair a value add the following to the *_val_repairs dict:
(key_path_tup): {bug: fix}

'key_path_tup'** is a tuple of dictionary keys. 'new_key' is the key you
would like to rename 'key_path_tuple[-1]' with. 'bug' is the value that
needs to be changed to 'fix'.

** key_path_tup will work ACROSS lists that are nested within plotly
JSON structures. For example, 'annotations' is a key in layout, but
layout['annotations'] is a list of dictionaries. These new functions
handle this inconsistency by splitting into a for loop each time this
happens and continuing along the remaining key_path_tup for each
dictionary in the list.

PlotlyRenderer class was updated to use this new functionality.
Added positioning for annotations.

Currently this uses a 'private' attribute from the base renderer class
to use _current_ax to get an inverse transform for annotation position.
Workaround for annotation transforms and axis label size.

These are hacky workarounds:

- Transform for annotation gives the transformation necessary to get
annotation coordinates into display coordinates. However, the
transformation to put these coordinates into data coordinates is not
given. A solution might be to either pass the axes object upon calling
draw_text. The 'private' _current_ax object from the base renderer class
was used to transform annotations to data coordinates (what plotly
generally uses)

- Axis labels are children of xaxis and yaxis instances, which are
children of the current axes object. When the label is passed to the
renderer, it would be helpful to either get this specific text instance
or the size. I used the current axis to get at the xaxis/yaxis objects
and then filted their lists of children until i found the label that
matched the one mplexporter passes to the renderer. I don't know that
there is a way to get around having to sort through the children and
compare strings. This probably won't break down for 'normal' use, but a
pathological example could make it do weird things.
Added docstrings to plotly_renderer and plotly_utils modules.
Merge branch 'master' into plotly

Conflicts:
	mplexporter/renderers/plotly/plotly_renderer.py
PlotlyRenderer updated for 'text_type' annotation options.

PlotlyRenderer now basically uses the draw_text method as a switch statement acting on the 'text_type' key in the props dictionary. To allow for proper subplot titles, all axes titles from matplotlib are actually imported as general annotations. The xlabel and ylabel are still placed into the layout dictionary as xaxis and yaxis titles.

Because plotly CENTERS text annotations when using data coordinates, all annotations are just reverted to 'paper' coordinates so that annotations don't move around unexpectedly. The goal right now is exact renderings of mpl figures.

The function convert_to_paper was added to plotly_utils, it converts
(x, y) pairs in mpl's 'display' (pixel) coordinates to plotly's 'paper' coordinates, which are fairly similar to mpl's 'figure' coordinates.
Cleared out some commented-out code that was unnecessary.
Merge pull request #7 from theengineear/plotly

Plolty's got: docstrings, updated draw_text for 'text_type' option, fixed conflicts