Bug 1040598 - Introduce StateManager and remove keyboard.js

*current*