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.
Typically nothing in our pages writes out individual chars. I thought it should be ok to represent it as strings instead. If you're asking about the specific way of converting it to a string, I'm open to suggestions.