tests: Store the loopback images for test outside unit-tests

This directory is copied to each test prefix which is really
slow with the large loopback mounts.
Always start tests from a clean set of loopback images

This way we don't get any issues with leftovers
DeviceSet: Add UnmountDevice()

Right now this does nothing but add a new layer, but it means
that all DeviceMounts are paired with DeviceUnmounts so that we
can track (and cleanup) active mounts.
deviceset: Cleanup device sets on test end

We unmount all mounts and deactivate all device mapper devices to
make sure we're left with no leftovers after the test.
graph test: Unmount image via image.Unmount()

This helps us track the unmount
Runtime: Only remove device on destroy if it exists
api_test: Fix PostContainersCreate

We can't look for the created file in the rwpath, because that
doesn't exist in the device-mapper world, instead look in the
RootfsPath.
image: Fix error in unmount

We were returning err if it was nil, not the other way around
Container: Inject into the mount, not the rwPath

For device-mapper setups we can't just push the file into the rwPath.