This is a large commit. The rfc7230 test suite adds many tests from the RFC7230 document. Gun has been updated quite a bit recently, which broke the Cowboy suites. This is now fixed with this commit. A new hook onfirstrequest has been added. It was very useful during debugging of the test suites. The initial process code has changed a little; more changes are expected with the switch to maps for options.
The Websocket text frames should also be less resource intensive to validate now, with a binary concatenation avoided.
There is wrong -spec of reply/4 function 3rd parametr type must be same as [#http_req spec](https://github.com/ninenines/cowboy/blob/master/src/cowboy_req.erl#L140)
This is more in line with what RC7230 says, and will allow simplifying the parsing code of a few headers in cowlib.
This document lists all rules that Cowboy HTTP server will follow after careful analysis of the RFC7230. Do note that not all these rules are implemented or tested yet, and that at the time of commit there may be rules that Cowboy will ultimately not implement (for various reasons including performance or leaving certain aspects up to the user code).
Now everywhere in Cowboy when we want to stop something we return a 'stop' tuple instead of one of the many choices depending on context that we had before. This particular change affects middlewares, sub protocols and REST handlers which were using 'halt' to stop processing.
The 'shutdown' atom has a specific meaning inside OTP. We are instead going to use 'stop' which is pretty much the equivalent of what we actually do. 'shutdown' is now reserved for future special processes implementation.