Allow handshaking outside of an acceptor

A transport's accept/2 can now also return
{ok, Socket, fun(() -> ok | {error, term()}). The fun will be
called inside ranch:accept_ack/1 to finish handshaking. The connection
process will exit with reason normal if the handshaking fails.