Expose the tool model to the client.

We need a specialized model on top of that in the client though, to create
the widget instances.
Add a way to request models independent of being in the client or server.

This way we can make the UI code largely unaware of where it is actually
been executed.
Move role definitions out of the model.

They are part of the network protocol, and this way we don't need access
to the actual model implementation on the client.
Integrate the tool model using the model broker.
Expose custom roles of ToolModel to the client.
Use a const QAIM pointer here to also work with QItemSelectionModel::model.