WIP: refactor the mpld3 object structure

This is a work in progress to refactor the object structure within mpld3.  A few goals, in order of precedence (some of these might wait for a later refactoring)

- [x] add a ``PlotElement`` base class, refactoring common functionality from all the plot elements
- [ ] update all current plot element classes to derive from this
- [ ] refactor ``draw`` and ``zoomed`` methods into ``draw``, ``update``, ``update_zoom`` as discussed in #63
- [ ] make ``mpld3_Line`` inherit from ``mpld3_Path`` to decrease code duplication and allow a more uniform plugin interface
- [ ] make ``mpld3_Markers`` inherit from ``mpld3_PathCollection``, again to decrease code duplication and allow a more uniform plugin interface