Merge pull request #12992 from gaye/bug-920261

Bug 920261 - mailto links broken r=jrburke
Bug 912010 - [Keyboard][V1.2] Default Keyboard when all keyboards are de-selected - r=rlu r=garychen r=arthurcc

- Refactors `KeyboardHelper`
  - Renames the application method to `getApps`, which now caches response until the apps change
  - Adds a new API `getLayouts` to get a callback with an array of layouts.
  - Adds a new API `watchLayouts` to get a callback whenever layout settings or apps change
  - No longer calls `saveToSettings` itself when changing layout parameters.  This allows a consumer to batch operations before saving.
  - New method `checkDefaults` will make sure there is at least one `text` `url` and `number` keyboard enabled, calling the callback with anything it enabled.
  - +unit test suite.

- ManifestHelper now automatically returns a ManifestHelper for each object it contains
  - +unit test suite
  - now waits until access time to handle the language selection instead of creation time
     - this allows holding the one manifest helper and having its "name" property change with the language

- Settings Changes
  - Now uses `watchLayouts` from keyboard_helper
  - Now calls `checkDefaults` when disabling a keyboard
    - If a default is enabled opens a DefaultKeyboardEnabledDialog
  - Removed a bunch of commented out code for dealing with the old layout settings

- System Changes
  - Now uses `watchLayouts` from keyboard_helper
  - Will call `checkDefaults` whenever it can't find a keyboard to show, showing the default from `text` if it still can't find one

- Test suite
  - Moved some mocks to shared and updated require statements
  - Mock Settings now allows a "sync mode" that can call the callbacks for observers on demand.

Closes gh-12866
Revert "Merge pull request #13097 from dmarcos/bug928614"

This reverts commit 4c652c5ca43f301217cbabf8f781b93a860bec37, reversing
changes made to afbf45f26a73b7cd5e0a831bea48087331975286.
Merge pull request #13100 from lightsofapollo/revert-4c652c5

Revert "Merge pull request #13097 from dmarcos/bug928614"
NO BUG - vbump marionette a=test-only
Merge pull request #13101 from lightsofapollo/vbump-marionette-1.0.0

NO BUG - vbump marionette a=test-only
Merge pull request #12935 from borjasalguero/uk_v1.2_sprint3_forward

Bug 927783 - [Messaging][Forward] Create action panel for deleting/forwa...
Bug 929813 - [Settings] Split up about.js and add declaration for subpanel dependencies
Merge pull request #13057 from KevinGrandon/bug_922658_settings_subpanel_about

Bug 929813 - [Settings] Split up about.js and add declaration for subpanel dependencies r=arthurcc
Bug 931054 - [Camera] filmstrip.js tries to access undefined preview metadata
Merge pull request #13107 from dmarcos/bug931054

Bug 931054 - [Camera] filmstrip.js tries to access undefined preview met...
Merge pull request #12293 from luke-chang/917732_multitouch_on_candidate_panel

Bug 917732 - [Keyboard] Candidate panel displays wrong data when clicking candidate-panel-toggle-button and space key at the same time, r=rudylu
Bug 930545 - Re-enable test_browser_bookmark.py
Merge pull request #12993 from punamdahiya/Bug916183

Bug916183 - Fix of Done button target is off r=alive
Bug 928281 - Add a setting entry to enable keyboard app run as Out-of-Process (OOP)
Merge pull request #13115 from RudyLu/keyboard/Bug928281-keyboard_OOP

Bug 928281 - Run keyboard app Out-of-Process (OOP). r=timdream
Merge pull request #13016 from KevinGrandon/bug_929840_use_css_for_settings_select

Bug 929840 - [Settings] Use CSS for fake select elements r=evelyn,ivanovpavel
Merge pull request #13066 from Pike/bug-930469-malformed-properties

bug 930469, malformed properties file.
Merge pull request #12529 from EverythingMe/session-reinit

[Bug 914591] make sure sessions get re-inited after expiration [r=ranbena]
Bug 921424 - Replace wait for landing page after unlocking with wait for displayed app to be homescreen