Feature/geometry

This PR adds an "tools_event" object to plots (that can be shared between plots in the future) that is a place that tools can store things like that do not depends on data sources, selection geometries, etc. Right now this minimal implementation allows selection geometries to be polled from python, with code like:
```
s = Session()
d = Document()
s.use_doc(docid="<my doc id>")
s.load_document(d)
plot = d._models["<my plot title>"]  # this needs improvement
te = plot.tool_events

# make a selection on the plot now

s.load_object(te, d)
te.geometries
```