Draft but working architectural changes according to Alive.

- implement new path for show input window
- implement new path for hide input window
- Reimplement IFM.getHeight and IFM.hasActiveKeyboard
- Finish preload and extract common code for generating InputWindows
- Use publish/broadcast and eventhandlers where possible