Introducing RazorTextWriter

RazorTextWriter represents the result of rendering a page as a sequence of
strings rather than a concatenated string. This avoids building up large
strings in memory.
@rynowak Discussed your concerns with @yishaigalatzer. The number of things that the stack would have is generally few (one for the view being rendered, and presumably 1-2 layout pages).  That's not a particularly large number of boxing operations per view. 

That said, we'll let these changes bake and see if these allocations do end up in the profile.