feat(API): Add middlewares to falcon API

Currently falcon provides hooks as a way to add logic to all "routed" requests. With this approach it's not possible to execute code when a request is not routed (e.g., method not allowed, path not found ...)
I would like to include the concept of middlewares (same as django) in falcon as it may be useful for many projects. Typical middlewares:
- Generate unique transaction for all requests
- Log all requests and include time ellapsed
- Authentication (imo this should happend before any logic of routing, aka find responder).

A list of Middleware classes can be added to falcon WSGI in this way: 

api.add_middlewares([MiddClass1,MidClass2])

A middleware will be executed always with every request/response dispatched, no matters routing and errors.
A middleware can define process_request or process_response or both; internally the code will be executed when corresponds.
Arguments are the same as hooks and error_handlers. In unit tests, some examples can be seen.

Yes, this can be removed. The extra "resource" parameter was only added in the mainline so doesn't exist in 0.1.x and nobody should be depending on it (unless they are using the alpha 0.2 release, and then they should not be surprised if the final release looks a little different).

TLDR; with the new definition of middleware, there is no "resource" context, and any standalone "before" and "after" hooks that were designed for 0.1 should continue to work with 0.2 since they will not accept a "resource" parameter anyway.