feat(API): Add middlewares to falcon API

A list of Middleware classes can be added to falcon WSGI as keyword arg in API
A middleware will be executed always with every request/response dispatched.
A middleware can define process_request or process_response or both.
Arguments are the same as hooks and error_handlers.
When exception happens, the response middleware corresponding to already executed
process_request mw will be executed
Merge pull request #329 from ealogar/feature/middlewares

feat(API): Add middlewares to falcon API
perf(Request): Cache native stream check

Avoid having to call isinstance every time a new Request object
is initialized. Use a flag that can be set after the first time
this check is made, so that thereafter a simple boolean operation
is required instead of having to call the more costly isinstance
function.