Refactor code for more precise typing
Refactor code for more precise typing

* Introduce Middleware module which allows to group under
  a same type all the functions and classes which can be used
  as middleware
* Functorize code for all the binding functions since they are
  share with the Router class (to be introduced in folowed up PR)
* Change module Express to App to reflect the Express classes.
* Add type constraint to ensure the server will not be left hanging
  inside a middleware function by forgetting to either call `next` or
  one of the send* function.
* Update the example

mransan/bs-express