original grammar copied and pasted from java7 language spec

url:  http://docs.oracle.com/javase/specs/jls/se7/html/jls-18.html
make grouping, repetition, and tokens explicit and clear:

 - grouping:  use parentheses to specify all grouping

 - repetition:  use ? for 0..1, * for 0..n

 - tokens:  surround in quotation marks
get rid of poor substitutes for `sepByN` and the `+` repetition operator
specification mistake:  redundant use of EnumDeclaration -- already provided by alternative rule ClassDeclaration
get rid of NormalClassDecl... and NormalInterfaceDecl... rules, they don't really help anything
remove one-off rules by factoring them 'in'

fix error: ',' should actually be ';'

refactor to use sepByN and + where applicable
Merge remote-tracking branch 'origin/master'