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)
Use erl -eval instead of rebar for generating edoc documentation
Stop using rebar in the Makefile

First and foremost: yes, you can still use Cowboy as a rebar dependency.
This commit only removes the use of rebar when *developing* Cowboy, not
when *using* Cowboy.

Over the past two years I went from very happy with rebar to unsatisfied
and most recently found it counter productive in many ways, from having
insane default configuration to various unefficient operations. The earlier
reversal from 'rebar ct' to 'ct_run' made my workflow much more natural,
as I always needed to look at 'logs/raw.log' to find out what was wrong,
anyway. Why not let 'ct_run' output it directly instead? Removing rebar
made my life easier.

If you wonder why I don't patch rebar, there's two reasons. First is that
the direction taken by rebar isn't compatible with my views, and this
would be a huge fight to steer it in another direction. I got other,
more important fights to make. Second is that I'd rather patch OTP so
that everyone benefits from it, not just users of rebar.

Anyway this isn't my personal blog so I will stop babbling here. There's
a few important things to note relative to this commit:

 *  You don't need rebar to work on Cowboy anymore
 *  The eunit tests are now ran through common_test

Ping me if it doesn't work out for you.
Change the response body streaming fun interface

Before we were required to get the socket and transport ourselves,
now they're passed to the function.
Remove cowboy_req:transport/1

It was added to help with response body streaming functions.
But it was a clumsy solution that we discarded in favor of
passing socket and transport to said function. It was also
very odd compared to the rest of the cowboy_req interface.

If you used this function before, worry not, here's its
proper equivalent.

[Socket, Transport] = cowboy_req:get([socket, transport], Req)
Fix a small warning in eunit_SUITE
Add cowboy_req:set_resp_body_fun/2

This allows streaming a body without knowing the length in advance.
Also allows {stream, StreamFun} response body in the REST code.
Fix examples to follow new env tuple standard

This brings examples in line with the recent Middleware change.
Merge pull request #359 from unix1/master

Fix examples to follow new env tuple standard
Add protection against slowloris vulnerability

This changes the behavior of the `timeout` protocol option to
mean "Time in which the full request line and headers must be
received". The default of 5s should be fine for all normal uses.

This change has no noticeable impact on performance and is thus
enabled by default for everyone. It can be disabled by setting
`timeout` to `infinity` although that is definitely not encouraged.

Inspired by the contribution from @naryl on github.
Add optional automatic response body compression

This behavior can be enabled with the `compress` protocol option.
See the `compress_response` example for more details.

All tests are now ran with and without compression for both HTTP
and HTTPS.
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.