Return 422 instead of 500 when handling body

Using a 4xx error would be more appropriate for this since the server is parsing the content from the client and needs to let the client know the data is malformed (not the actual HTTP request but i.e. JSON semantics). The definition for 422 is described in [RFC 4918](https://tools.ietf.org/html/rfc4918#section-11.2)
Remove cowboy_dispatcher

Types and code are moved to cowboy_router. The match/3 export
from cowboy_dispatcher isn't available anymore as it is called
internally.
Update handler callback specs

There is one another {upgrade, ...} quintuple allowed as the result of
Handler:init call, somewhy not mentioned in the callback specifications.
New routing

Ultimately few things change, it's mostly just a nicer syntax and
slightly different expectations. The name of the value `dispatch`
did not change, because the previous dispatch values will now fail
if the code is not updated to using `cowboy_router:compile/1`.

No constraints have been implemented in this commit.
Add the 'int' constraint
Add the 'function' constraint
If a binding is reused, we check that values are identical

This is more for consistency than anything.
Update roadmap
Update Ranch to 0.6.1
Makefile: only recompile files newer than the .app
Merge branch 'fix/callback_specs' of https://github.com/keynslug/cowboy
Add a section about closing the connection in the guide
Do not attempt to skip the request body on Connection: close
Fix {cowboy_req, resp_sent} potentially leaking in loop handlers
Make examples use the new routing
add patch support to cowboy_rest
Fix chunked streaming of request body and improve speed
Merge branch 'rest_patch' of https://github.com/treetopllc/cowboy
allow POST rest handling to specify path after accepting content
Makefile verbosity tweaks