Async introspect

We can't block the rest of the agent while talking out to other
DBus services.

This also removes the big leak of cached introspect data which
used to be global and never released until the agent went away.