Add DCONF_ERROR error domain

Add a DCONF_ERROR error domain with associated DConfError enum type.

Use this instead of the adhoc approach that we've been taking up to this
point.

https://bugzilla.gnome.org/show_bug.cgi?id=704638
tests: test dconf_engine_read_user_value()

Make sure it's returning the value only in the cases we expect.
tests: more engine coverage improvements
gdbus backend: handle reply_type properly

The test coverage report turned up some dead code in the engine as a
result of the gdbus backend not properly checking the return type of
D-Bus messages.

Fix that up.
dbus mock: add some better API

Add API for replying to async calls in the mock dbus backend and for
checking that there are no calls outstanding.

Use it from the engine test.
tests: test read-through functionality

Make sure the read_through parameter to _read() and _read_user_value()
is behaving as we expect it to.
engine: fix locking bug

Make sure we actually acquire the sources lock on entry to
dconf_engine_read_user_value().

Uncovered during testing.
engine: issue warnings once per source

On failure to open a gvdb file in /etc/dconf/db we would issue a warning
once per process -- even if multiple files were missing.

This was enforced using a static variable.

An unfortunate side effect of this global state is that the testcases
couldn't reliably know if to expect the error or not.  This issue was
side-stepped by running any cases that may emit the warning under a
fork, but that made it difficult to debug some of the cases.

Rework the backends not to use global state for the flag and instead
store it per-source.

Remove a use of g_test_trap_fork().
tests: add test for engine change_sync
tests: fix a small lie

N_MAX_SOURCES is 3 but we only check up to < N_MAX_SOURCES, so we only
ever checked 2.

The tests work with 3, but it takes very very long to run them, so fix
the comparison but at the same time, decrease the count.