device-mapper: Create full docker init layer in base fs

This creates the same base layer files as Graph.getDockerInitLayer()
Clean up device mapper code a bit

We now use docker-$HASH as the device mapper names to make it
easier for users to figure out which maps to what.

We also change the base hash to "" internally to match the VolumeSet
API and generally clean up the code a bit.
device-mapper: Call mount directly

No need to shell out for this.
volumeset: Add support for remove and marking volumes as initialized

We want to mark images as initialized once we've finished extracting
to them to protect agaist crashes and failures in the middle of that.
image: Properly initialize volumes as needed

Require an initialized volume for a base image, and ensure
that we initialize created volumes after all the image setup is
done. This should make failure during image setup less problematic.
Image: Add some debug spew about volumes
image: Clean up code

Minor change to make the expression more readable
device-manager: Clean up base-image initialization

We now base the initialization on the existance of an initialized
volume in the json file, if this doesn't exist or is not initialized
we recreate one. This allows initialization on external devices,
as well as handling problems during previous initialization.
device-mapper: Update json file with fsync and atomic rename
device-mapper: Add devmapper.GetNextTarget wrapper
device-mapper: Update the transaction id for the docker-pool
device-mapper: Fix AUFS metadata ignoring in Image.applyLayer()

We need to ignore the whole subdirectory, also, the match was
wrong as the relative path doesn't start with /