Allow handshaking outside of an acceptor

A transport's accept/2 can now also return
{ok, Socket, fun((timeout()) -> ok | {error, term()}). The fun will be
called inside ranch:accept_ack/2 to finish handshaking. The new,
optional second argument to ranch:accept_ack/2 is passed to the fun
returned by an accept/2 as the timeout for handshaking.