Bug 1093537 - Move input app window management-related responsibility from KeyboardManager to InputWindowManager

- A lot of events that only affects inputWindow showing/hiding goes to InputWindowManager instead of KeyboardManager now.
- "RemoveKeyboard" concept is now separated:
 -- "keyboardlayoutsremoved" is used to signify that some keyboard layouts have been removed (disabled from system settings, or uninstalled keyboard app); it is sent from KeyboardManager to InputWindowManager; the latter will remove InputWindow references accordingly.
 -- "keyboardkilled" is used to signify that a loaded and currently showing out-of-process keyboard has been OOM'killed. It is sent from InputWindowManager to KeyboardManager such that the latter determines a keyboard layout to relaunch.
- A closed InputWindow now has height 0 instead of undefined.
- Please use inputWindowManager.hideInputWindow()/.hideInputWindowImmediately()/.getHeight() in place of KeyboardManager.hideKeyboard()/.hideKeyboardImmediately/.getHeight().
- inputWindowManager is a singleton and accessible in the window scope.