Garbage collection

Currently, we have to wrap complex types in Arc or Rc to make them easily cloneable. But this makes cycles difficult. We might want to instead expose some Gc type backed by a more powerful garbage collector. This would also work well with A design of shared mutability.

dumpster might be what we need: Garbage collection in Rust got a little better