dbus/proxies.py: Finish implementing deferred methods so they can be async.
* Queue up async methods and execute them when introspection finishes, instead
of blocking on the introspection operation (heavily based on patch by J5)
* Rename DeferedMethod (sic) to spell Deferred correctly, and rename to
_DeferredMethod (also _ProxyMethod) since these classes are not public API
* Make it safe to keep a reference to a DeferredMethod and call it with
differing arguments:
meth = proxy.DoStuff
meth(1, reply_handler=on_reply, error_handler=on_error)
meth(2, reply_handler=on_reply, error_handler=on_error)
* Make it safe to keep references to DeferredMethod even after introspection
has finished - if called after introspection finishes, silently do an
immediate call
* Add some locking to avoid subtle failures if one thread appends
to the pending introspect queue at the same time another thread gets
introspection results back - ProxyObject and friends should now be
threadsafe (I think)