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.
Pass a parent object to the client factory callback.

Since this is only being done on the client side and never for
in-process mode we do not need to use one of our objects here
for hiding in the object model. Still, this is cleaner.
Keep a generic ObjectBroker::object<T>(QString) for the future.

The version which uses the qobject_interface_iid() only works if
just a single object of the given type is ever registered. If multiple
objects for a given interface are registered, we need the generic
function above which this patch re-introduces.

Until the tools are ported, they now use the even more generic
objectInternal function.
Merge pull request #51 from KDAB/refactor-client-server-for-typesafe-interfaces

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