Fixes #20

"The first argument of a middleware function should be a handler, and its
return value should be a new handler function."

This commit fixes with-middlewares macro so that it works with regular
ring middlewares where middleware functions take additional parameters.
Document `middlewares` macro

Document `middlewares` macro and expose it directly so users can more
easily check its implementation from IDE.
Merge branch 'feature/proper-middlewares'