Ignore false GObject property change notifications

This is related to bug 698275, which did not cover all cases.
The problem here is that the dconf can in certain situation claim
that everything changed (path "/" changed), which GSettingsBinding
propagates to a GObject property unconditionally and GObject's
property setter (g_object_set_property()) also notifies about
the property change unconditionally, despite the real descendant
property setter properly checks for the value change. After all
these false notifications a callback on "notify" signal is called
and possibly an expensive operation is run.

Checking whether the value really changed helps in performance, for
which were added new e-util functions:
   e_signal_connect_notify()
   e_signal_connect_notify_after()
   e_signal_connect_notify_swapped()
   e_signal_connect_notify_object()
which have the same prototype as their GLib counterparts, but they allow
only "notify::..." signals and they test whether the value really changed
before they call the registered callback.
Properly disconnect signal handlers added with e_signal_connect_notify*()

This is a follow-up for the previous commit, where e_signal_connect_notify*()
functions had been added. Due to a different callback and user data being
attached to the 'notify' signal, the g_signal_handlers_*() functions do not
work properly, thus these e_signal_connect_notify*() functions need
a different way for a signal handler disconnect.

A side-change was done in e-settings-web-view-gtkhtml.c, checking for a real
key change from GSettings.
Ignore false GSettings key change notifications

Similar to GObject::notify, the GSettings::changed can be emitted
even if a key didn't change. It's up to the user (aka evolution)
to test for real changes, thus let's do it. It may have certain
performance positive impact too.
Bug 730977 - Online state change received in a dedicated thread
Bug 731321 - Missing custom types when loading .ui definition
Bug 668006 - Crash when dragging column headers of Tasks list
NEWS update for 3.12.3
Post-release version bump
Fix possible crash after migrate of mbox to maildir

Folders can leave notifications in the main loop which would be delivered
on idle, but these can be left in the main loop longer than the temporary
CamelSession object is alive, which leads to a crash, because of
the CamelStore's descendant being freed too early.
Bug 731278 - Next message is not selected after move
Bug 704663 - Crash under em_folder_tree_model_add_store()
EClientSelector: Do not check connection for empty or "localhost" host

Related to bug 731585
Fix memory leaks when generating message list

It turned out that the values returned from ml_tree_value_at_ex() can
be dynamically allocated, thus proper free functions should be called
for these too.
Bug 731549 - EMFolderTree: Text column doesn't expand with recent gtk+

gtk commit 73ff6a8e0ff307b8d14986c64918022364ff10e7 removed the code
that made the column expand previously, resulting in only ellipses being
shown.
Bug 702703 - Do not use local machine's domain in Message IDs
Bug 731231 - Automatic 'mark as seen' sometimes cancelled incorrectly
Bug 731590 - Crash on calendar Copy
Bug 731770 - Sometimes crashes when trying to load images in e-mails
Bug 731604 - Recursive inline-PGP-signed text not shown properly
Bug 652132 - Google Tasks support