Better mode extension support: status sync and disabling.
- Support disabling extensions being activated as part of a mode.
- Ensuring that non writable gsettings keys are reflecting the enablement status accordingly.
- Factor out the canEnable and enable/disable logic in the Shell, exposing them via DBus API.
- Ensure -prefs only rely on the DBus API and doesn't have local logic relying on environment.
Note: this is the part we agreed upon on https://bugzilla.gnome.org/show_bug.cgi?id=789852. I have 2 followup commits on the updating mecanism, but those are in a separate branch not proposed until we reach a decision. Those commits can be safely merged though.