Split volumes out from daemon

Splits volumes into two pieces:
1) The volume itself
2) The volume as it relates to a container <- calling this a `volume mount`

Basically, a volume is just some path on the host, either created by Docker or created by the user and used in Docker.
A mount is the point at which volumes and containers intersect.

Also stops using the image graph as a means of creating/storing volumes, which really seems like a bad hack.  Instead we use the graph driver directly and store configuration specifically related to the volume which we can use later.  Is it writable, what path is it located at, and what containers are using it, is it a bind-mount, etc...
So `/var/lib/docker/volumes/<id>` will have real data in it that we can use later, not just non-sensical json data as it is today.
Basically, get a true/false since the only modes we currently support are "rw" and "ro", and then compare that to the mode from the original mode.
If the inherited mnt.Writable was false, it will always be false.
If the inherited mnt.Writable is true, but the passed in mode is "ro", it will be false.

Basically just ensures that if the inherited volume is not writable, then we can't make it writable with --volumes-from.