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.
Also to add, it's not critical to do this now - if these guys being a class is another optimization opportunity, this will show up in the profiles and the evidence will lead us to address it.