libnm-glib: remove nm-dbus-utils.[ch]

The code hasn't been used in a very long time.
libnm-glib: don't use client-side generated dbus-glib bindings

Most of the code was using dbus_g_proxy_call() directly, but there
were some leftover uses of the generated bindings. Make things more
consistent by using dbus_g_proxy_call() everywhere, and stop building
the -bindings.h files.
examples: add C examples for monitoring whether NM runs

- the first uses dbus-glib and D-Bus "NameOwnerChanged" signal directly
- the second uses GIO's g_bus_watch_name()
- the third uses Qt and QDBusServiceWatcher class
libnm-glib: simplify and genericize property declaration

Rename _nm_object_handle_properties_changed(), etc, to be about
properties in general, rather than just property changes.

Interpret func==NULL in NMPropertiesInfo as meaning "use
_nm_object_demarshal_generic", and then reorder the fields so that you
can just leave that field out in the declarations when it's NULL.

Add a way to register properties that exist in D-Bus but aren't
tracked by the NMObjects, and use that for NMDevice's D-Bus Ip4Address
property, replacing the existing hack.

Also add a few other missing properties noticed along the way.
libnm-glib: simplify property getter methods

Rather than having every property getter method have code to fetch
that specific property's value, just call the new
_nm_object_ensure_inited() (which makes sure that we've read all the
property values on the object at least once), and then return the
cached value. (After we've read the initial property values, the
PropertiesChanged signal handler will ensure that the values are kept
up to date, so we can always just return cached property values after
that point.)

This then lets us get rid of _nm_object_get_property() and its
wrappers.
libnm-glib: simplify handling of object and object array properties

Add an "object_type" field to NMPropertiesInfo, and use that with
DBUS_TYPE_G_OBJECT_PATH and DBUS_TYPE_G_ARRAY_OF_OBJECT_PATH
properties so that we don't need custom marshallers for each one.

When creating an NMDevice or NMActiveConnection, we need to fetch an
extra property first to figure out the exact subclass to use, so add a
bit of infrastructure for that as well. Also, do that preprocessing
asynchronously when processing a property change notification, so that
it doesn't block the main loop.
libnm-glib: add "pseudoproperties" for things like Client.GetDevices

Add generic handling for "properties" that consist of a "Get" method,
an "Added" signal, and a "Removed" signal, reusing some of the code
for handling object-array-valued properties. And load the values of
pseudo properties from _nm_object_reload/ensure_properties as well.
libnm-glib: implement GInitable/GAsyncInitable in NMObject

Implement GInitable and GAsyncInitable in NMObject, with
implementations that synchronously or asynchonously load all
properties, and change _nm_object_ensure_inited() to run
g_initable_init().

Update the object/object-array property handling to initialize the
objects after creating them (synchronously or asynchronously,
according to the situation), so that they will have all of their
properties preloaded before they are ever visible to the caller.

Move the non-blocking/non-failable parts of various objects'
constructor() methods to constructed(), and move the blocking/failable
parts to init(), and implement init_async() methods with non-blocking
versions of the blocking methods.

Make nm_device_new() and nm_client_new() call
_nm_object_ensure_inited(), to preserve the behaviour formerly
enforced by their construct() methods, that properties are guaranteed
to be initialized before any signals involving them are emitted.
libnm-glib: nm_client_new_async, fix up NMClient asynchrony issues
libnm-glib: asyncify NMRemoteSettings

Add nm_remote_settings_new_async/_finish, and misc other fixes
docs: reference NMRemoteSettings from NMClient creators

It can be a bit confusing that one object doesn't do both
control and configuration.  So throw users a bone and tell
them how.
core: move device creation into the manager

Consolidate device creation in the manager object; bluetooth and
modem devices were already handled by it, so it makes sense to do
it all from one place.  Furthermore we'll be creating virtual devices
in the manager too.  It also reduces indirection (no need to send
device_creator() in the DEVICE_ADDED signal) and makes the code
flow clearer.
libnm-glib: fix to not depend on newer glib
core: fix singleton handling in NULL/systemd session monitor
systemd: suppress logging each message twice when run via systemd (rh #751275)
wifi: fix nl80211 periodic signal reporting to be more frequent

BSS info apparently doesn't get updated that often since it's
based on scan information, so instead use the AP info which updates
with every beacon.  Using the BSS info caused the signal to
be the same value over long periods of time even when moving far
away from the AP.
libnm-util: register more GValue transformations for debugging
libnm-glib: ensure synchronous property updates are actually synchronous

Some property updates (mainly those dealing with properties that
hold objects themsevles) weren't being done in a synchronous manner
when synchronicity was requested.  Make sure that happens.
libnm-glib: better debugging of property accesses and updates

Need to initialize libnm-util to get GValue transforms registered
so the property values print out as strings.  Then actually print
some debugging information about properties.
libnm-glib: fix missing G_VALUE_INIT to not depend on newer glib