Add command line options with argparse.

Remove hard coded keywords and template files, replacing them with
command line arguments.
Flush last line of syntax block.

Each syntax block is built up line by line. This fixes a bug where the
last line of a block was not being flushed, resulting in missing
keywords in the syntax definition.
Fix duplicated keyword entries.

Fixed a bug where if there is a keyword of the same name in multiple
types (e.g. a keyword might be a function and a method in some class),
it will be listed multiple times in the syntax definition file.
Fix regular expression.

Keywords.txt entries usually have three tab-separated fields, but
occasionally there are only two. Fix the regular expression so both
cases are handled.
Remove commented example lines.
Remove KEYWORD3 type keywords from generated file.

KEYWORD3 is mostly statements like, if, while, synchronized, etc, which
should be correctly highlight by the Java syntax definition.
Fix regex.

Some (one?) of the entries in keywords.txt have a space after the
keyword name, before the tab. Update the regular expression to handle
this case.
Add whitespace for clarity.
Replace text wrapping code with textwrap module.
Add compare.py to compare syntax definitions.

Because syntax files are autogenerated using make_syntax.py, it can be
hard to see what has changed between files. This script extracts the
keywords from two syntax files, and lists those that have been removed,
and those that have been added.