Change the Handler trait to receive an Iterator of (Request, Response) pairs.

This allows downstream users to have total control of their concurrency
strategy, while also exposing a very nice, streaming interface for frameworks
to build on.

This also resolves issues surrounding the use of IoResult as the return type
of Handler::handle, because handlers now have complete control over how to
handle internal failure.

Fixes #3
Fixes #4
Updated example for new Handler trait

This introduces a bit of complexity to the example,
mainly the use of the try_continue! macro for dealing
with errors, but I think this is an appropriate trade-off
as users of this library are likely to be framework authors
instead of end users.
Use an out-of-tree unsafe-any trait instead of a home-grown version.

This has the advantage of being separately checked, tested
and documented.
Add a get_raw method, which allows users to access the raw value of a header

This method is marked unsafe, as it should not be used in normal code
because it can easily invalidate header representations.

Fixes #10
Merge pull request #15 from reem/use-outside-unsafe-any-trait

Use an out-of-tree unsafe-any trait instead of a home-grown version.
Merge pull request #16 from reem/expose-raw-header

Add a get_raw method, which allows users to access the raw value of a header
Merge pull request #13 from reem/handler-iterator

Change the Handler trait to receive an Iterator of (Request, Response) pairs.
Key Headers HashMap with SendStr instead of &'static str

This fixes an unsafe transmute that could cause use-after-frees
on collision resolution in the headers hash and avoids allocating
for cases where it is not necessary.

Fixes #12