Add container garbage collection.

Work in progress, will add unit tests this evening, assuming this looks ok.
Why is TTL a flag and this is not?