Don't use :XXX syntax for different Period, TimeSpan, etc. sub-types. Instead look for an initial literal string. This was the approach I originally took, and it's now clear that it's more flexible because it will allow grammar-writers more control over their grammars since they can then specify whatever :XXX suffixes they want for Periods, TimeSpans, etc.
Simplifies pattern matching in TemporalParse, and removes attributes from SynchronousParser.Tree.NonTerminal that were only there to make complex pattern matching easier and are now no longer necessary.
Separates out special time span expressions, like "the past" and "now" from the rest of the time span expressions. This removes ambiguity from, e.g. "the past year".
Groups grammar rules in a more intuitive way and comments everything much more thoroughly