Rewrote parser to handle blacklisted modifiers.

This involved a rewrite of the parser. Tests we also modified, but apart from an additional test case, the only changes to the spec were in comments and whitespace.