add graceful listener shutdown support

This change add the possibility to gracefully close listeners when
needed.

Instead of brutally closing all tcp connections this change introduce
the following behaviour when `ranch:shutdown_listener/1` and
`ranch:shutdown_listener/2`  are used:

- Stop accepting all connections on the socket and close it
- Wait until the graceful timeout is achieved to close all supervised
  connections for this listener.

This behaviour is identique to the one you can find in nginx when using
the QUIT signal.