Implement VDI.{attach,detach}

In attach, we look for any existing loopdevs, and return any we find.
In detach, we look for any existing loopdevs, and detach one if it exists.

Signed-off-by: David Scott <dave.scott@eu.citrix.com>