Bug 1011482 - add value and compositeKey for alt

Alternative keys can be represent as

- `'€£'` when all alternative is a single character,
- `'€ R$'` when at least one alternative is a compositeKey and
- `[{value: '€', compositeKey: '\\Euro'}, {value: '£', compositeKey:
  '\\textsterling'}]` when at least one alternative is a
  compositeKey different from the value/label to be show at the
  keyboard.
Bug 1011661 - Add uppercase for compositeKey

Add support for uppercase and lowercase version of compositekey.

Introduce field `upperCompositeKey` that store the uppercase
version.
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.