Allow use on streams; Option for case sensitive headers

I'm using this to parse a stream of response messages, so I've added Content-Length accounting to know when we reach the end of a non-chunked message.

The second commit adds a preserCase option to avoid lower casing header names.
Hi, sorry, GitHub never sent me an email about this, so I'm just seeing it now!  Thanks for your contribution.

It looks like BODY_RAW no longer calls onBody, and it's also subtracting from body_bytes (which, I think is null), should this be an onBody call here, otherwise it will no longer work on http responses without content-length?