Snapshot API

Add snapshotting to the Chisel emulator API. Officially, this feature is still in beta, since more discussion is needed about the API is implemented and what the interface is.
Currently, this uses the default copy constructor to make module copies when a snapshot is requested. It's not too elegant, since it copies all the other mod_t state - a better solution would be to generate a circuit_copy and circuit_restore function, along with a circuit_state data structure, but that would be a lot of work which isn't worth it (at least not until mod_t gets further bloated / stuff we don't want copied gets copied).
Also updated the comments in emulator_api.h. Some API functions marked as BETA, meaning that they are subject to change without backwards compatibility - use with care.
An abstract clone function has also been added in the mod_t, so mod_t is no longer instantiable (which really should be the case from the start).
Tests should pass, both chisel-tutorial and sbt test (no failures, nonzero number of skipped tests stays constant).