Snapshot prototype

This is a controller snapshot prototype, based on fork().

In POX, the only shared state across fork() is a single multiplexed socket. By carefully cloning that socket, we can snapshot the state of the controller at any point. The main use of this snapshotting will be for use in peek(), but snapshotting may have other uses.

This is currently only supported for POX, since other controllers are distributed (and hence require Chandy-Lamport for correct snapshotting), and use other kinds of shared state, such as disk.

See `sts/util/socket_mux/pox_monkeypatcher.py` for the description of the snapshot protocol.