Record monitor connect/disconnect events.

Each time we receive an XEvent we diff the list of currently connected
monitors with the list of previously connected monitors. Any
differences are recorded using the event recorder API. It is possible
that there will be no differences to record because XEvents are sent
for more events than just monitor connects and disconnects.

[endlessm/eos-sdk#635]
I would prefer to pass all the bytes at once, but I haven't found support for that in the GVariant API. The version of the GVariant API we are using is pretty explicit about expecting a `GVariantBuilder *` for arrays in `g_variant_new`. I pasted in the relevant excerpts from the documentation below. Maybe this changed somewhat recently?

"The type of the created instance and the arguments that are expected by this function are determined by format_string . See the section on GVariant format strings. Please note that the syntax of the format string is very likely to be extended in the future."
~ https://developer.gnome.org/glib/stable/glib-GVariant.html#g-variant-new

"Upon encountering an 'a' character followed by a type string, g_variant_new() will take a (GVariantBuilder *) that has been created as an array builder for an array of the type given in the type string. The builder will have g_variant_builder_end() called on it and the result will be used as the value. As a special exception, if the given type string is a definite type, then NULL may be given to mean an empty array of that type."
~ https://developer.gnome.org/glib/stable/gvariant-format-strings.html#gvariant-format-strings-arrays