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.
I think it's probably alright either way, if you leave it internal then leave a comment that it's specifically for tests.