Bug 1027646 - Add LaTeX layout

- Switch row
- Alternative keys

  String.toUpperCase() don't work for some unicode chars,
  e.g. styled latin letters. To fix this we need to provide the
  upper case value of the char using upperValue.
- Math environment key, '$$'

  Since the switch row replace switch key function we can use
  the key as math environment key, '$x$'.

  Isn't necessary a key for display math environment since type
  twice the math environment key will have the same effect.

  Close r-gaia-cs/gaia#3.
Bug 1027646 - Avoid change font size of last row

Instead of keyClassName at layout use className for each key.

Close r-gaia-cs/gaia#4.
Bug 1027646 - Fix overflow for some alternate keys

Add `ratio` as another valid field of alternate keys to help
set the key width.

Close #11.
Bug 1027670 - Add IME that handle LaTeX

- Add handler for compositeKey
- Add handler for backspace
- Add handler for period
- Add jumps

  Avoid jumps far from cursor.
Bug 1027670 - Improve compositeKeyClick