refactor(middleware): remove RequestHandler

Blanket impls for Middleware cover the same usage scenarios.
feat(middleware): lazy querystring and json parsers

[breaking-change]

To use these lazy plugins a &mut Request is required. Handlers
which only have access to &Request will need to update their
signature.

Nickel::json_body_parser and Nickel::query_string are also removed.
Import the relevant trait to get the required functionality.
refactor(QueryString): query(..) now returns a Cow smart pointer

[breaking-change]

This reduces the allocations per call if there exists a value.

This is breaking because for some code you will need to deref the
Cow to deal with it, or if you want to use the Vec in mutable way
 then you will need to call either into_owned() or to_mut().
chore(imports): remove unused imports
refactor(query_string): simplify query_string::parse
fix(doctest): compile doctest for listen but dont run it
refactor(default_error): simplify default_error_handler
refactor(errorhandler): generic return type for blanket impl
Merge pull request #121 from Ryman/middleware_reform

Lazy middleware examples