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.
Along with this I think is a possible misunderstanding of the contract behind lastHoverData.  Is the lastHoverData essentially the HoverData we got during our last sensible sampling and then this function just assumes for now that the last data gotten is the most sensible data to return?

Or is lastHoverData always going to reflect the data that the user is hovering on top of?

In the first case, I am ok with the name lastHoverData whereas in the second case, I would prefer currentHoverData.  The name currentHoverData essentially has an implicit contract that the data is always a mirror to what the user is hovering over, whereas this contract is not as strong in lastHoverData.

The reason why I'm stressing this fact is when we develop against hoverInteraction in the near future, it'd be nice to know the contract of these variables/functions.  "this.lastHoverData is the HoverData that was last sampled so I can't really rely on it if I want up-to-date HoverData, whereas getCurrentlyHovered seems to always get me that up-to-date HoverData"