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)
Update autobahntestsuite to 0.5.2

Also small mostly insignificant changes to tests.
Remove support for Websocket hixie76 draft

It was only used by Safari 5.0.1 and possibly 5.1. Their market share
is dropping as we speak. It was also insecure (disabled in Firefox
for that reason).

This will allow us to make much more efficient and cleaner code for
the rest of the Websocket versions we support (drafts 7 to 17 + RFC),
which are pretty much all versions seen in the wild excluding the
one we're removing here.
Fix getting started example, missing env
All frames sent from client to server MUST be masked

Good in theory, but implementations may vary. If something stops
working after this commit we might need some tweaks to support
existing clients.

Please try it and give feedback.
Unmask websocket frames on the fly and optimize the code

No change in functionality, but this will allow us to validate
that text frames are utf8 without having to receive the frame
entirely.
Websocket text frames are now checked for UTF-8 correctness

The autobahntestsuite now passes 100% of the tests. We are
getting close to fully implementing the Websocket RFC.
Improve websocket close handling

We now always send a failure reason (bad protocol, bad encoding, etc.)
unless the closure was initiated by the client and it didn't send a
close code.

We now check that the close frames have a payload that is valid UTF-8,
unless they don't have a payload at all.

We now do not crash the process anymore when bad opcodes are sent, or
when the opcode 0 is sent before fragmentation was initiated.

Overall this makes us closer to full compliance with the RFC.
Add Sec-Websocket-Protocol header parsing
Add recursive dependency fetching to the Makefile

Also small other changes like how we build the PLT.
Add cowboy_websocket:close_code/0

Also fixes a warning.
Add cowboy_bstr:capitalize_token/1

For optional header name capitalization. See the guide section about it.
Get the basics of Websocket covered in the guide
Explain how to write custom protocol upgrades in the guide
Do not use tabulations in the guide
Add hooks documentation to the guide
Fix typo in the guide introduction
Fix capitalize_hook example
Finish the routing chapter of the guide

Note that this is the new routing not yet available in master.
The code should follow in a few days.
Add plain HTTP handlers documentation to the guide