functional-tests: Replace use of PyGObject and PyGTK with PyGI

If we do 'import gobject' anywhere then we cannot use the new
GObject-introspection based Python bindings, because they conflict.

This change means the functional tests can now use PyGI, instead of the
deprecated and out-of-date PyGObject and PyGTK.

Note that the dbus-python bindings are still widely used in the
functional-tests. These work fine but are deprecated. We should
switch to using GDBus through GObject-introspection instead when possible.
functional-tests: Rewrite DConf code to use GObject introspection

The tests will now detect if the DConf backend is not in use and raise
an error, where previously tests would fail for confusing reasons. Also,
we no longer have to shell out to 'gsettings' to set up the
configuration.

Configuration values now have to be specified as GLib.Variant instances
instead of Python types. That's a bit of a pain. PyGI should have a way
of creating a GVariant from an arbitrary Python value, but I didn't find
one.
functional-tests: Watch for Tracker processes crashing

Tests should notice straight away if a Tracker process crashes,
and raise an exception.
functional-tests: Fix tests that use ExtractorHelper

The DBus name of the tracker-extract process has changed, so some of the
functional tests were hanging forever as they were watching the wrong bus name.

There's also no longer a tracker extract interface at all.

This fixes a bunch of tests that were hanging forever waiting for the
extractor's object to appear.
functional-tests: Tweaks to process helpers

Note the bug I found where if you send TERM to tracker-extract while it's
initialising, it hangs. I'll fix this in a separate commit.
functional-tests: Rework 400-extractor.py test

Tests now call the tracker-extract process manually and parse its
ouput. This is necessary because the D-Bus interface it used to expose
has been removed. It'd be better to run the tests with a store and
miner and check that the correct data is inserted in the store, but
for now this approach is OK, and it does have the advantage that the
extractor is tested independently of the store & filesystem miner.