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.

I feel like it's buried sufficiently deep that it's not worth improving. I don't think new Pair("pair1", "pair2") is any clearer, in fact I think the way the current code is formatted is clearer in terms of demonstrating upper/lowercase.