Don't halt gc due to readdir after clean; more verbose error reporting.

If there is a race with another gc process and the directory is removed
after it is cleaned, just skip the directory and go on (instead of
throwing an exception and halting the gc process).

Include a msg field with the error list to record additional information
about the cause of any particular error seen during directory clean up.

Change-Id: Id7c20b30be896afc93db512fb147b76caa3a875e