Modest clean up of pipe_of_body in async backend

There are no apparent semantic changes. However Pipe.close might
be called more in some cases (doens't make a difference).
formatting
parse keep-alive header
predicate whether request wants conneciton persisted
make lwt respect connection: close
overhaul body type to be closer to lwt

in Lwt the body type is basically:
[`String of string | `Stream of string Lwt_stream.t] option

We make it:

[`String of string | `Pipe of string Pipe.Reader.t | `Empty]

which substitututes pipe for stream and inlines the option
sexpify some types in async
update helpers to use new body type
change signature for respond/sever to use new body
formatting
rework async client handling

- make async support persistent connections the http 1.1 default. no
  pipelining yet however.
- use the new body type when writing responses
- set the response "connection" header appropriately

more work left ahead:

- support keep-alive options like max connections/timeout
- share more code with lwt if possible
slightly better handling of persistent connections

Now server will accept queueing requests from a client as any compliant
http 1.1 compliant will. However it will still process them serially.
Merge pull request #89 from rgrinberg/master

remove mirage test
don't rescue any failing client callbacks

It's a good idea to continue serving a client even if a single respoonse
fails however it doesn't work with the ?on_handler_error param. Better
design needed.
Merge pull request #13 from avsm/master

0.9.16 (for real this time)
Merge pull request #87 from rgrinberg/async_cleanup

Modest clean up of pipe_of_body in async backend
Merge branch 'async_persistent_connections' of git://github.com/rgrinberg/ocaml-cohttp into rgrinberg-async_persistent_connections
Bump trunk to 0.9.17
Add missing copyright for IO.mli
Recent versions of Async no longer shadow Sys.getenv_exn, so remove `Core.Std` prefix