Start of utopia.client, resolved socket.error's not getting re-raised if unhandled
Cleaned up IO termination in Core, gevent.joinall(client._jobs) will now work and client.close() will properly interrupt greenlets tied to that Core instance.