Implement a multiplexer for sockets

To combat non-determinism in socket scheduling, multiplex all sockets through
a single connection.

Still need to monkeypatch
Allow MultiplexedSelect to have more than one true_io_workers.

Needed for the STS side, since there may be multiple controllers.
Modify STSSocketMultiplexer to allow for multiple controllers

Don't really know address for a given socket until connect() is called
fix bug in invocation of time._orig_time
Hook child processes up to our stdin (useful for pdb)
Implement a handshake protocol

Also make data base64 encoded/decoded (binary doesn't play nice with json)
Implement monkey patching. It works!

Needed to fix a few bugs along the way:
 - make sure bind() isn't called twice -- need to be careful about the order
   we load POX modules
 - need to actually send data in send() [even if non-blocking]
 - don't assume that only MockSockets are passed into select. The client can
   also pass in wrappers of MockSockets (e.g. IOWorkers, or Connections).
   Therefore, need to track which sockets are ready to send according to
   MockSocket.fileno()
Implement monkey patching. It works!

Needed to fix a few bugs along the way:
 - make sure bind() isn't called twice -- need to be careful about the order
   we load POX modules
 - need to actually send data in send() [even if non-blocking]
 - don't assume that only MockSockets are passed into select. The client can
   also pass in wrappers of MockSockets (e.g. IOWorkers, or Connections).
   Therefore, need to track which sockets are ready to send according to
   MockSocket.fileno()
Add a config that exercises the Multiplexed socketS
Allow the server to invoke bind() multiple times
Technically, bind() doesn't necessarily imply listen()
fix configuration file generation to include monkey_patch_select
Merge pull request #4 from ucb-sts/sock_mux

Socket multiplexing