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_manager.js, where it's more suitable to be in.
- Also, removed parseInt() on keycodes where suitable as we now retreive "number" from the objects held by WeakMap.
This can move to L157 -- avoid duplicated lines in early return here.

Alternatively, we can normalize the keys at `LayoutLoader`; I know I say `LayoutManager` in the bug but that was a unfortunate typo :'(.