New InstanceViewSource behaviour

Altered to use a new WeakRef to handle the problem of not retaining
viewed objects. This slightly violates Box contract, but in a way that
is valid for the limited use case we have here. Still assessing whether
this is a better way to do things - it has a big advantage of causing
less changes when the model of the MultiView changes, and also avoids
resetting Views that are not being used to default models, which causes
loss of e.g. list selections, etc.
Added bar charts

Start of bar chart implementation, uses most of the same Graph stuff as
XY data, but assigns a data position on X axis based on categories,
allowing for primary and secondary categories. Still needs tooltips and
selection/selection display, plus an axis implementation to display
primary category names, and possibly a legend for secondary category
names.

Also added optional print parameter for string tooltips to allow for
custom rendering of keys to String for display (previously just used
toString, this is now the default if no print specified).