Add 'reverse_mapping' argument to util.undelimit_mapping()...

because we actually want our volume bindings with reversed key-values, because
it makes more sense a) with what we have to pass to docker, b) because it's
more likely that we'll change the local directory for a mount when we come to
update it with a group, rather than change the mount point and c) we might want
to bind a single local directory to many container mount points.
Remove unused util.delimit_mapping()
Stop '_attached' being an instance variable of a Cluster...

so that we could potentially run the threaded stuff twice without conflict. Not
that realistically we ever would, but it's the principle.
Pass Groups around correctly when performing operations
Fix runner building images
Add tests for container operations
Fix broken cluster attachment test...

We hadn't added the dependency to the cluster!
Add Image tests
Fix ignoring of Ctrl+C...

Turns out Queue.get() with no timeout cannot be interrupted by signals for some
Python implementation reason to do with locks. Adding a timeout makes it
function as expected.
Add cover/ to .gitignore
Unify and test image operations
Remove tests for old runner