feat(nickel): Support for sharing data between requests per route basis.

My attempt at issue #79.

This is mostly non breaking. As far as I know, nothing will break unless people were implementing `RequestHandler` for something else than the default implementation. I don't think anyone did though.

The new feature is that it is possible use a handler signature like `fn root_handler (_request: &Request, response: &mut Response, route_data: &RouteData)`, and then register it with the router with `server.get_with_data("/", root_handler, RouteData{...});` as can be seen in the new example I've added. 

This has many usecases, many of which required a middleware before. In the new example provided I count how many hits a route has gotten. One could also store a database connection in there, as is the example in issue #79 where this comes from.

I've been fighting the compiler with this for some time so some refactoring that I can't spot right now might be needed, point out anything you find! We might also want to discuss the naming of the new router methods (`get` - `get_with_data` and so on) and come up with something that feels good. =)
I'm not a fan of `x_with_data`, perhaps we can just drop that and have an `Option<T>` added to `add_route`, it makes the default slightly more verbose (an additional `None`) but I think it may make it clearer to reason about: "This route has `Some(..)` shared data". Similarly, I think `shared_data` is a better name for the argument.