WIP: Add container garbage collection.

Work in progress, will add unit tests this evening, assuming this looks ok.
What happens to the exit code info?  Lost?  If so, need to wait to gc until the image has been stopped for X time