Bug 1044525 - Use a WeakMap to hold layout key objects, mapped from DOM elements, to avoid poking with DOM elements in various modules aside from renderer.

- render.js's key properties normalization is now done in layout_key_normalizer.js. The normalization for static layouts takes place in layout loader, when the layout is loaded. Layout Manager's on-the-fly generated keys are normalized too (when they're generated, of course).
- Also, removed parseInt() on keycodes where suitable as we now retreive "number" from the objects held by WeakMap.
- A small helper function has been inserted into |LayoutManager.updateCurrentPage| to facilitate inserting keys into spaceKeyRow.
I am not sure I fully understand what this component does, but if we want to simplify some operations around a "key", maybe we could consider create a `Key` class for it, and instantiate key object for each key.