agent: Implement CockpitFakeManager a GDBusObjectManager clone

This implements GDBusObjectManager by using Introspect() and
PropertiesChanged signals to discover objects that show up.
We watch signals for object paths, and then Introspect() them to
see if they're valid and what interfaces are present.

We assume that each new, changed, removed interafce will have a
signal related to it emitted. Without this there's not much we
can do to track new objects etc.

At present this is a bit racy. If an object changes while we're
already looking at it we won't introspect it again.
agent: CockpitDBusJson works with plain GDBusObjectManager

Use only GDBusObjectManager interface in CockpitDBusJson. This way
we can switch in other implementations.
agent: Support "object-paths" argument in dbus-json1 channel

When this option is specified instead of an "object-manager" option,
we use CockpitFakeManager to discover objects rather than
GDBusObjectManagerClient.

Fixes #251
Closes #460