Modify parser to group html begin/end elements.

- Added a "Tag" block type.
- Wrapped all begin/end elements in a "Tag" Markup block.
- Attempted to change as little as possible in the parser since it is easily the most fragile part of Razor.

#75

Since this impacted a large amount of the existing tests I've created a separate "test" PR.  I felt that the existing tests did more than enough verification for this "feature" since it's at the core of the Razor parser, let me know if you have a different opinion.

Test PR: https://github.com/aspnet/Razor/pull/87
pls file a separate issue to think about removing this class; this PR layers run-once on top of run-at-least-once and that results in odd explicit calls to `Dispose()`.  Plus, as @rynowak said earlier, this "scoped object" stuff is a perf anti-pattern.
And, yes, that issue will likely need to do _something_ for stack dives where this class is used.