ApplyLayer() use RemoveAll to handle removing directories

rmTargetPath can be a directory, so we have to use RemoveAll() or we
will fail to whiteout non-empty directories.
Use ExportChanges() in runtime.Diff()

This code was duplicated in two places, one which was unused. This
syncs the code and removes the unused version.
Add tests for the changes detection code

This adds 3 tests:

Verify that ChangesDirs() returns nothing when run on a copy of the
same directory.

Verify that various mutations of a directory get reported with the
right changes.

Verify that ExportChanges() + ApplyLayer() of the above mutation gets
an identical directory.

Unfortunately the last test is disabled because it fails in multiple
ways atm. But I want to get it in so that we can fix it.
Show active driver in docker info output
Print devicemapper status details in docker info

This adds a generic Status call in the Driver api and
implements if for the devicemapper backend.

The status is an array of key/value strings rather than a map so that
we can guarantee some static order of the docker info output.
Use dummy driver for volumes

It makes no sense to use the aufs or devicemapper drivers for volumes.
The aufs one is perhaps not a big problem, but the devicemapper one
certainly is. It will be unnecessarily using a dm
blockdevice-over-loopback with a limited size base FS.

This just hardcodes the driver to be the dummy, perhaps in the future
we can have other drivers that make sense for the volumes.
Merge pull request #30 from alexlarsson/dm-plugins-archive-tests

Dm plugins archive tests
Merge pull request #34 from alexlarsson/dm-plugin-dummy-volumes

Use dummy driver for volumes
Merge pull request #33 from alexlarsson/dm-plugin-status

Add driver plugin status
Unlink docker init files