Improve handling of literal values

IE: Don't treat a var name like nullColumnHack as if it were
the literal 'null'
Fix handling of varargs+fully-qualified types
Fix scientific notation reading
Use IdentifierExpression.read from SelectorExpression

More consistent parsing, and correct handling of
full.qualified.Path[].class
Fix handling of <<=
Don't add "null" to string/char literal after escaped char
Handle wacky ternary wizardry

Apparently you can have an assignment as one of the return
branches, but ONLY the "true" branch. Tested with javac. Wacky
Handle blocks with just ; in them
Handle unicode literal chars
Accept a single ; for the body of an if
Improve number parsing

Ex: -1.234e8f;
More permissive char parsing
Lame hack to handle if ((foo.bar()) instanceof Baz) {}
Improve handling of weird case statements

Use readLiteral instead of readString with extra space (that was
a bad hack, anyway)
Ensure ClassBody is closed, as we do for Block
Handle double literals that look like ints, ex: 100d
Remove skips from parse-fail-detect; EVERYTHING parses now! :D