Add container garbage collection.

Work in progress, will add unit tests this evening, assuming this looks ok.
maybe add more context with `fmt.Errorf`? (ex: the id of the container you were trying to remove)