MRG: refactor the mpld3 object structure

This is a work in progress to refactor the object structure within mpld3. **Edit: no longer a work in progress. This is finished!**  A few goals, in order of precedence.

- [x] add a ``PlotElement`` base class, refactoring common functionality from all the plot elements
- [x] update all current plot element classes to derive from this
- [x] make ``mpld3_Line`` inherit from ``mpld3_Path`` to decrease code duplication and allow a more uniform plugin interface
- [x] make ``mpld3_Markers`` inherit from ``mpld3_PathCollection``, again to decrease code duplication and allow a more uniform plugin interface

Some other potential changes, which can probably wait for a later PR:

- [ ] make ``mpld3_Grid`` inherit from ``mpld3_Axis``?  This one's not obvious to me, but it might make sense...
- [ ] make a ``PluginFactory``, similar to the current ``ButtonFactory``, for use in user-defined plugins.
- [ ] refactor ``draw`` and ``zoomed`` methods into ``draw``, ``update``, ``update_zoom`` as discussed in #63

For this PR, I want to finish the top bunch.  I'm happy leaving the other ones for a later point.