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
@NTaylorMullen these items shouldn't have finalizers - that would mean that your 'action' will fire at an undeterministic time (or never). A quick scan doesn't turn up any finalizer implementations in razor.

The `protected virtual void Dispose(bool disposing)` is part of the pattern for classes that own native resources, so that you can segregate cleanup of native and managed stuff. None of these classes need it... `public void Dispose()` is good enough.

As an aside - this seems like a real anti-pattern to me, and I hope we're not introducing more of it for taghelpers. It's definitely a performance anti-pattern as it generally leads to capturing lambdas all over.