A pessimized implementation of thread-safe calls

Since the call closures _may_ be invoked in the context of another task,
it's a bad idea to pass them mutable pointers to on-stack boxes.

The wrapped objects now hold references to the default GMainContext
of the thread they were obtained in. The context pointer is woven
through the Rust <-> GLib interface to ensure that no objects are
used outside of their GMainContext. If needed, a call is dispatched
through the GMainContext in another thread.
Exported on- and off-stack call paths to Rust

So that Rust code gets to use stack closures
with the fast on-stack call path.
Added a test for off-stack calls

The test either crashes or hangs up.
Some support for debug builds

Now you can do `make BUILD_OPTIONS=debug`.
Debug printouts for refcounting
Disable gdbus/gvfs usage when running tests

The gvfsdbus backend adds a lot of runtime state and activity
highly dependent on local configuration. Even if it may reveal
problems in our event loop code, the added noise and lack of
predictability is unwelcome for testing and the debug tools.