Add support for listening on random port numbers (port 0)

ranch:get_port/1 returns the given listener's port.
Add an SSL test
Introduce the ranch_server registry, make it handle listeners
Register acceptors through ranch_server
Make acceptors query the protocol opts on startup

This way, if a crash happens in one of them after a protocol options
upgrade has occured, the restarted acceptor will get the upgraded
options as expected, and not the initial ones.
Make accept asynchronous

Ranch now accepts connection asynchronously through a separate
process. The accept process is linked to the acceptor, calls
accept and does nothing else but send the socket back to the
acceptor. This allows us to receive messages in the acceptor
to handle upgrades instead of polling. This will also allow us
later to make acceptors system processes.

Remove support for connection pools in favor of a simpler
max_connections setting. Connections can be removed from the
count, allowing us to have as many long-lived connections as
we want while still limiting the number of short-lived ones.

Add max_connections, max_connections with long-lived connections,
and upgrade tests.
Check the accept/2 return value for errors

Distinguish the errors from transport_accept and ssl_accept
in ranch_ssl. {error, closed} for the first one means the listening
socket got closed; for the second one it means the connection
socket was.

Ignore all errors except when the listening socket got closed,
where we want to crash to allow opening the socket again.
Make ranch_sup the owner of the ranch_server ets table

Should prove itself more robust when things go wrong.
Add a TCP Echo protocol example
Add tests for {active, once} for both TCP and SSL
Add the 'ranch_transport' behaviour

At the same time we make the 'port' option optional, defaulting to 0.
Add the 'ranch_protocol' behaviour
Add initial Ranch guide
Update version to 0.4.0
Add the {nodelay, boolean()} option controlling TCP_NODELAY

Enabled by default.

A comprehensive explanation about TCP_NODELAY and the Nagle algorithm
can be found at http://www.stuartcheshire.org/papers/NagleDelayedAck/
Small README fixes
Allow passing the 'verify' option in ranch_ssl
Allow IP tuples and more when connecting transports
Fix Markdown in the guide
Add two values to Ranch application for private use