Add a model that will enable client-side hierarchy visualization.

This just adds two extra roles for stuff currently read from the raw object
pointers.
Get rid of m_availableObjects by repopulating from the model directly.

One step further towards removing raw QObject pointers in client side code.
Port the object filter to using the selection model.
Compress repopulation requests, they are quite expensive.
Properly react to model changes.