Refactor the NetworkObject code and how server/client split is done.

The goal is to allow typesafe interfaces to be used in the UI of a
tool. These interfaces are then implemented twice, once for the
server/probe/in-process mode and once for the client.

Clients simply forward messages over the endpoint to/from the
server, which so far involves a bit of monkey coding which we might
eventually replace by a code generator if required.

A server/in-process implementation is the "real thing" and can
ignore the NetworkObject besides inheriting from it. Still lef to
do is forwarding the signals it emits to the client(s).

This all is achieved by getting rid of ObjectServer and ObjectClient.
Instead we introduced a ObjectRegistrarCallback to the ObjectBroker
which is set in both, remote and client mode. The remote version
simply registers the client for new messages. The client version
handles the logic which was previously inside ObjectClient centrally
in GammaRay::Client now.

By that we can now always inherit from NetworkObject, which is crucial
for interfaces. In the future we might even be able to do some magic
with the MetaObject now to forward signals etc. pp.

The FontBrowser is the first to use a typesafe interface for message
passing between server and client. The changes to the other tools
is minimal and basically boils down to replacing ObjectServer with
NetworkObject. We might even be able to remove the need to link
against anything in core/remote in the future. Furthermore this
should allow us to completely split tools into server/client/ui.