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.
Merge pull request #30 from blackboxsociety/refactor_parser_io

Refactored parser io
Fix for the http body parser for requests

Converting the `next` value directly to a string yields the entire string
instead of the remainding portion of the parsed string. Did some simple
hacks so it yields the intuitive results now.
Merge pull request #31 from blackboxsociety/request_body_fix

Fix for the http body parser for requests
Created type safe response headers

Created some very simple type safe response headers for a common subset
of headers used. This is lots of work for a small win. We can now have
autocompletion for returning headers and have the compiler verify we don't
have any typos in the keys of these headers.
Merge pull request #32 from blackboxsociety/typed_response_headers

Created type safe response headers
More inversion of control on tcp sockets

One of the problems with `TcpClient` was that there was no good way to easily
tell if there was more data or not. Now all data read from a socket will be
wrapped in a `Finishable[A]`. A `Finishable[A]` will be either a `More[A]` or
a `Done[A]`. `More[A]` wraps the read data and signifies that theres more data
to be read from the socket and `Done[A]` wraps the read data and signifies that
we have reached the end of the socket's data (socket close).
clean up
Merge pull request #33 from blackboxsociety/more_inversion_on_client

More inversion of control on tcp sockets
Finished http service implementation.