Bug 816912 - Keyboard Manager to support 3rd-party keyboard
    1. manage running keyboard layouts in System app
    2. generat new mozSettings array for keyboard app, setLayoutEnable
and saveToSettings fn in keyboard helper.
    3. keyboard helper will send 'keyboardsrefresh' event when
'mozSettings' change.
    4. Bug 885692 - To integrate with the new keyboard switching API. for km
    5. Bug 902830 - Use new chrome event for keyboard manager.
r=timdream
Bug 858383 - [Keyboard] Integrate the new keyboard manager with switch
and show layout list functions in Keyboard app.
 1. Modify keyboard manifest to expose entry points as input methods.
 2. Modify keyboard init logic to interact with new keyboard manager.
 3. Make use of inputContext in keyboard app.
 4. Bug 885692 - To integrate with the new keyboard switching API. for keyboard app
 5. Bug 899073 - inputContext.geText() whould return Promise
r=timdream
Bug 856910 - Add MVVM pattern in settings app. r=evelyn
Bug 856910, Bug 893557 -
1. Add Observable, ObservableArray, and ListView to Utils.
2. Add unit testing.
3. Implement the keyboard panel based on the UX spec.
r=evelyn
Bug 906096 - Add some Gaia workaround to ensure the new IME framework continues to work in Firefox Nightly
r=timdream
Merge pull request #11845 from RudyLu/3rdParty_keyboard_support_commit2

Add 3rd party keyboard support. r=timdream, evelyn.