core: set GError on failure in nm_manager_deactivate_connection() (rh #976627)

It fixes NM crash (abort) when VPN connection can't be disconnected.
libnm-util: update 'timestamp' property description, noting it is read-only
libnm-util: fix description comment for 'read-only' property
core: call nm_device_queue_state() instead of direct state transition

in nm_device_start_ip_check(), because it is called from the state handler
(nm_device_state_changed()).

Errors:
(devices/nm-device.c:5585):nm_device_state_changed: runtime check failed: (priv->in_state_changed == FALSE)
<info> (eth0): device state change: ip-check -> secondaries (reason 'none') [80 90 0]
trivial: remove redundant include
core: convey route priority to nm-platform
trivial: clarify has_ip_config()

Make it more explicit that it returns TRUE for UNMANAGED state.
vpn: don't misuse parent's prefix length

The VPN gateway is a single address.
trivial: remove obsolete FIXME
core: don't use flags for nm_system_apply_ip[46]_config

nm_platform_*_sync() functions check the cached kernel configuration
items (addresses, routes) before adding addresses to the kernel.
Therefore we don't need to be so careful about pushing NetworkManager
configuration to the kernel.

This patch helps to avoid having to compare nm_ip[46]_config objects,
which should only be created when a configuration change is being
performed.
core: fix IP_DONE vs. IP_FAIL states

0652d9c5961e4636eab87647af890aaf8c3e3269 changed IP states like this:
        |        old behaviour          |  new behaviour
---------------------------------------------------------
success | IP_DONE && config is not NULL |    IP_DONE
failure | IP_DONE && config is NULL     |    IP_FAIL

But some failure paths was not updated.
cli: correct printing success indication on 'nmcli con up'
cli: fix quitting nmcli on 'nmcli con up'

We should also quit on 'DEACTIVATED' state' when monitoring active connection
state.

Reproducer:
nmcli con add con-name myvlan dev eth1 id 88
nmcli -p con up myvlan
trivial: move a couple of functions to nm-ip[46]-config

Note that this patch doesn't effectively change any code.

Functions moved from nm-system:

* nm_system_apply_ip?_config → nm_ip?_config_commit
* ip?_dest_in_same_subnet → nm_ip?_config_destination_is_direct

Functions moved from NetworkManagerUtils:

* nm_utils_merge_ip?_config → nm_ip?_config_merge_setting

Functions renamed (and moved down to form one group):

* nm_ip?_config_new_for_interface → nm_ip?_config_capture

(The rationale for the rename is that from the achitectural point of
view it doesn't matter whether the function creates a new object or
updates an existing one. After the rename, it's obvious that
nm_ip?_config_capture() and nm_ip?_config_commit() are counterparts of
each other.)
libnm-util: fix possible crash when IP method is NULL
core: use nm_ip[46]_config_get_gateway()
trivial: move merge_ip6_configs() to nm-ip6-config
dhcp: use nm_ip[46]_config_get_gateway() in tests
trivial: simplify nm_ip[46]_config_diff() result check

nm_ip[46]_config_diff() explicitly checks for NULL arguments.
trivial: simplify nm_ip[46]_config_diff() NULL comparison logic