implement streaming responses ♫♫

One thing I'm unsure about here: is `byte[4096]` the optimal type for `HttpParser::buffer`? Perhaps another size or a dynamically growing buffer would be better.
"chunked" isn't the right way to detect this. In practice "chunked" really means "dynamically-generated" -- i.e. "content length not known ahead of time" -- but that's orthogonal to streaming. A very large file download may have known length and thus be served using content-length and without chunking.

What we should really do is switch to streaming whenever the body goes over a certain size (maybe 1MB) or takes longer than a certain amount of time to generate (maybe 10ms). The length limit will catch large file downloads, and the time limit will catch techniques like JSONP that used to be used for event streams pre-WebSocket (they keep the response open and idle for long periods in order to write a chunk for each event).

All that said, if you want to leave this as a todo, I'm OK with that.