Break up the Ragel C grammar.

The grammar is now broken up in to a base lexer and a C lexer. This allows the
same grammar to also be used in the Java code.