Use SoftReferences for Keyboards

Rather than keeping strong references to all possible keyboard types,
now only soft references are kept, and new keyboards are created on
demand. The soft references are keyed using KeyboardId.
Move keyboard type check into KeyboardId

Implement keyboard type checks (Three Corner or Qwerty) in KeyboardId,
so that if new keyboard ids are ever introduced, the checks can be
updated along with it.

Renamed isEnglish() to isQwerty(), as the type of keyboard is what is
needed, not the language.
Merge branch 'master' into lowmem

Require new ProGuard configuration to make testing easier.
Increment version number for alpha
Proguard dumps for version 4~alpha01
Merge branch 'master' into lowmem

Merge fix for NullPointerException.
Version bump
Proguard for v4-alpha02
Use keycode from Keyboard, not Resources
Move KeyboardManager to onCreate()

Move reference of KeyboardManager to onCreate(). There is no need to
reset the reference every time onInitializeInterface() is called, since
KeyboardManager is a singleton.
Formatting
Use keycode from Keyboard, not Resources
Set and clear composing text
Only update wildcard key

Remove redundant searching for array of keys. Instead, only search and
update the wildcard key, as that's the only key needed.
Separate resetIme() from resetThreeCorner()

Separate resetIme() from resetThreeCorner(), so that resetIme() resets
the input method regardless of what the current keyboard happens to be.
For resetting Three Corner keyboard, resetThreeCorner() should be called
instead.
Merge branch 'lowmem'
Version bump
Proguard dumps for v4-alpha03