(doc) Updated benchmarks for newest results.

This also adds new benchmarks for the Server and mocking the Clients.
(doc) Documented the internal design of Hyper.

This includes a rationale and description of the overall design of
Hyper as well as providing a guide to understanding and navigating the
source.
Move internal design overview to documentation, add examples to README

While the README examples are not checked by rustdoc, they are important
to have as they show-off hyper to the world :)
Merge pull request #46 from reem/enhance-README

(doc) Documented the internal design of Hyper.
Fixed bad reference to echo server example.
property treat header names as case insensitive
Merge pull request #57 from hyperium/case-insensitive

property treat header names as case insensitive
update to rust master
Merge pull request #58 from hyperium/rustup

update to rust master
update to rust master

fixing usage of a Private trait as bounds for a public trait
Merge pull request #60 from hyperium/rustup

update to rust master
enforce Request/Response to be Send
Merge pull request #61 from hyperium/assert-send

enforce Request/Response to be Send
Store Header Items behind an RWLock

This removes the need to receive `&mut self` in `get_ref` and `get.`

Since the interior mutability of the RWLock is needed only once,
it is safe to change the lifetime of the pointer given by read locks
as by then all mutation has been done.

Since `set` still requires `&mut self` there is no way to use the interior
mutability of the RWLock to modify an existing `&`-reference. However,
the use of interior mutability in `get_ref` means that `get_raw` is now
actually an unsafe operation because the (now `*const`) pointer could be
invalidated by a subsequent call to `get_ref.`

Fixes #47
Add tests for double-reads for Header to ensure safety.
Update server and client for changes in Headers mutability.
Fixed a race condition in `get_ref`

If two threads attempted to `get_ref` the same Header under two
representations, then it was possible that the second thread would
overwrite the work of the first thread, causing the first thread
to do an unchecked downcast to the wrong type.

In the case where they were the same Header representation, then the
only damage would be that it would be parsed twice and would possibly
return a false negative in one thread.

The new code checks that it was not a queued lock and will not override
the work of another thread, but will accept it if the other thread parsed
the header as the same type. This also prevents duplicate parsing.
Remove get and rename get_ref to get

Since `get_ref` (now `get`) takes `&self` there is no need
for a special cloning method.
Add get_mut for modifying the typed representation of Headers.

Also adds an associated test and updates code to use it instead
of cloning and setting when possible.