Change the class_specifier rules to better match standard.

This should not create any functional changes, it is primarily for
readability.
Simplify the way that tilde is handled in the grammar.
Add "final" as a keyword, allow it in class definition.

I could not find any way to do this in a context-insensitive way, or
without in fact identifying "final" as a keyword.  The result is a bit
messy (because the new token "FINAL" acts as an identifier) and also
results in a shift/reduce conflict (because "FINAL" has a special
interpretation in a class specifier).