Refactored parser io

The way parser io was implemented was pretty hackish and limiting. Now
the http request parser is consuming a parser stream and returning an
`HttpRequest` that has an attribute called `body` of type `ParserStream`.
The body attribute will be used to pass off to specific body parsers.