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.

IMO:
the old falcon "after" / add_exception behaviour was:
- Catching all exceptions (even those launched inside after as it is a decorator...)
- apply error_handling
- execute after again- > and maybe one fater callable could be executed two times;
This can lead to an after being executed twice that is not desirable...

I propose you include  process_exception in middleware to handle this.
process_exception receives an exception, request, response and params method and is called when any Exception happens in request, responder or response_mw globally.
error_handler is executed before process_exception
if you define process_exception=process_response you will have the behaviour of falcon but you may change this.
Any exception launched in process_exception would be propagated up and not checked.
I will code this so that you can understand better and check if you like it or not!

This will leave you the possibility to decide which logic should apply in case of Error, that is a special case.