Add {client,server}_bridge_fn

Add the variables client_bridge_fn and server_bridge_fn that will be
called in bridge instead of always calling bridge_client and
bridge_server.

This will be used for those times where bridging is not the correct
action to take when data is available, like during an TLS/SSL handshake.
Add bridge_fns to connections.

This will allow us to easily override what function to call on a socket
having data ready.
Make explicit the set of fds to listen on

Connections now have the select_fds property that is a tuple of (rlist,
wlist, xlist) that can be passed into select. To change the fds
post-start call connection.set_select_fds

This also allows write and exeception inputs into select as well.
Use nonblocking connects when connecting to remote

The connection to the remote endpoint of a connection is now done
nonblocking instead of using a timeout.

This greately increases parallelism during connection creation since
applications tend to create multiple connections at the same time.

In addition we will no longer block for a second when connecting to an
endpoint that times out, though this happens very rarely.
Make SSL MiTM connections non-blocking
Merge pull request #37 from google/timeout_removal

Make connections nonblocking