(fix) Remove usage of replace_map.

Replace-map is unsafe in the presence of exceptions,
so its use must be removed. Instead, the internal
representation of Chain now uses a mostly-always-Some
Option to store its Handler.

Additionally, to simplify the ecosystem, AroundMiddleware
has been modified to receive and return
Box<Handler + Send + Sync>.

[breaking-change]
Merge pull request #208 from reem/fix/replace-map-removal

(fix) Remove usage of replace_map.
(chore) Reorganize in preparation for adding modifiers.
(feat) Added a Body modifier, for efficiently setting a response body.
(feat) Added a ContentType modifier, for quickly setting the content-type header.
(feat) Added a Status modifier, for quickly setting a response status.
(feat) Added Redirect, a modifier for setting the location header.
(chore) Deprecate many existing Response constructors in favor of modifiers.
(chore) Expose Set.
(refactor) Stream response bodies to clients instead of re-allocating.

The new .set(Body) feature sets content-length appropriately and is
far more amenable to streaming than the previous scheme, this allows
us to get away with a more performant scheme.
(doc) Documented the modifiers module.
(chore) Hack around lack of impl Reader for Box<Reader + Send>.
(chore) Remove use of deprecated Response constructors.
(chore) Change the style of using .set.
(doc) Assorted documentation nitpicks and fixes.
(fix) Update Modifier::modify for safety reasons.

The old implementation was exception unsafe, so
had to be changed.