Additional support for internationalization

Refactor character and sequence rules into single classes that accept character data as input.
Added common character data in CharacterData and SequenceData classes.

`char[][][]` is still bothering me. I'm thinking we should have a data structure that represents the pairs of characters. Something as simple as Pair<String, String>[] seems much clearer, is more correct (strictly limits to pairs), and easier to specify:

    EN_QWERTY = new Pair[] {
        new Pair("`1234567890-=", "~!@#$%^&*()_+"),
        ....
    };