first cut for selelction manager

This PR supersedes the previous selection PR. It adds:

* `Selector` class to mediate selections for individual tools
* `SelectionManager` class for data sources to manage selections and inspections.

Definitions:
* "selections" are sets of indices on a data source, they may be built up over time (if a tool support shift for multi-select, etc.) Selections are saved to a data source on the server. 
* "insepctions" are one off selections that do not persist to the server. They are useful for passive, hover like tools. 

TODO:
* [ ] refactor/simplify hover, click click tool using a singe `PointSelectorTool` with `hover`, `click`, and `button` modes. 
* [ ] `DataSource` base class for column and server data source that has the `SelectionManager`
* [ ] simplify/improve highlighting code
@mattpap this is temporary.