New Template Parser changes, fixes, and improvements.

This is squashed commit of many changes. Here is a list of the changes:

1. Fixes in the positioning, and added the ability to include or exclude a trailing '.' on chained method calls.
2. TemplateRegionParser optimisations.
3. ScalaTemplateParser optimisations.
    - This mainly consisted of rewriting mixed, matchExpression and caseExpression to never back track by merging matchExpression with safeExpression and expression, and having caseExpression accept just whitespace instead of waiting for plain to later eat it.
4. Fixed bug in mixed production where it would add an extra '}' even if not parsed.
5. Better isBrace detection for the template region parser.
    - PartitionHelper.isBrace assumed that given a token to check, there would only be only brace in the token. This how failed for tokens whose text were '} {'. isBrace now matches any token whose only contents is whitespace and braces.
6. Fixed syntax highlighting error when template brace precedes magic at.
    - It's possible for "default partitions" to have "}@" follow by a "{@", in which neither the magic at or the brace get recognised for syntax highlighting.
7. Fixed backtracking bug in forExpression production.
8. Better template parse error reporting.
9. Renamed NewScalaTemplateCompiler to ScalaTemplateParser & added invalid '@' error checking.
10. Added error report for caseExpression and fixed bad source position of forExpression.
11. Fixed completion bug that occurred when the text replacement region was zero-length (i.e., after a '.')
Added comment to PartitionHelpers.isCombinedBraceMagicAt describing what it does.
Feedback changes and bug fix in template completion proposals.