Add remote support for the StateMachineViewer.

This mostly boils down to refactoring the StateMachineViewer and
splitting it up into a Server/Client and Widget part.

The interaction between those two parts is handled via the new
Interface which emits signals whenever the graph has changed.

In the future this should probably be rewritten to evaluate the
graph structure on the client side by going through models which
are published from the server side. The Transition and StateModels
might already fit part of the bill and only need to be extended.

To get this working short-term though, the approach taken here should
suffice for now. Problems might arise when connecting a client
to a server which is in the middle of constructing the graph and/or
after it constructed the graph. This only is a problem when we have
multiple clients connected to a single server (or have both, in-probe
and remote client gui).
Preselect first row and expand tree by default.

This introduces a new DeferredTreeViewConfiguration, similar to the
DeferredResizeModeSetter which selects and expands new rows if
required. I.e. no selection is changed, if one exists.
Emit dataChanged only for states which became (in)active.

This way we don't have to emit the costly layoutChanged which also
resets remote models and thus breaks selections which is essential
when selecting a state for filtering.
Merge pull request #55 from KDAB/remote-statemachineviewer

Remote statemachineviewer