Extract drawing logic to drawers.

Close #1106.
Move drawing logic to drawers.

Close #1106.
Added Interaction.Hover.

Interaction.Hover acts on any Component that has implemented the
Hoverable interface, which allows the Interaction.Hover to query
the Hoverable for data given a cursor position.

Added a hoverMode() call to AbstractBarPlot, which will allow
Interaction.Hover to replace the Interaction.BarHover.
Add in hoverInteractionTests.ts
Merge branch 'develop' into hover-interaction

Conflicts:
	plottable-dev.d.ts
	plottable.d.ts
Refactor Interaction.Hover to be clearer.

Factored out the diff-ing of HoverData.

JSDoc-ed Hoverable.
Remove paint method.
Add in missing semicolons.
Merge branch 'develop' into 1106_drawers

Conflicts:
	plottable.js
	src/components/plots/abstractBarPlot.ts
Fix reference issue.
Rename methods in Hoverable.

Underscore-protected all methods in Hoverable, as the user is not
intended to call them directly.

Renamed getHoverData --> _doHover. The call retrieves the HoverData,
but is also intended to trigger any visualizations associated with
hovering, so it's not strictly a getter. Renamed to make this clear.
Move create shape to plot.
Move back creating shape to drawer.
Fix Clustered Bar Plot.
Fix tslint errors.
Remove paint from scatter and stacked plots.
Refactor Grid plot.
Fix animation on StackedBarPlot.
Add copyMap method, add jsdocs.
Refactors, add test cases.

Made diffHoverData() static.

Added test cases to tests for getCurrentlyHovered().

Adjusted D3 defs file: See https://github.com/borisyankov/DefinitelyTyped/pull/2989.