Remove volumes after build

Since these volumes are both unreferencable, and should be completely
reproducible by subsequent builds, they can be safely removed.

Resolves #6993 which was closed but not dealt with.

In the original implementation we decided that the way `docker rm -v` was traversing the whole container graph to see if any of the containers were referencing the volume being deleted was not ideal, especially when it's called after each build step (or even just at the end of the build).
Instead this is now implemented with a volume->container mapping.
Incidentally this is also laying some of the groundwork for first class volumes.
Indeed.  The reason it's split currently is in the future I hope to add volumes without being tied to a container.
But it could certainly do something like `daemon.volumes.Add(vo, "")`, where we check for `""` and just don't add a ref in that case.