Add error mechanism for TagHelperParseTreeRewriter.

- Replaced customer facing Debug.Assert with a new error mechanism to surface errors to GenerateCode callers.
- The new mechanism is a general purpose way for `ISyntaxTreeRewriters` to add errors to the parsing phase.
- Added tests to validate `RazorError`s.

#174
Yes, we want to get the last constructed `TagHelper` which will be closest to the end of the children list.