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.
should this just be an object instead, and just provide accessors instead. This way we don't need to have extra allocations per entry