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 by a protocol to finish handshaking.