Proposal: Add volume ls/inspect/rm/create commands

`docker volumes ls` - list all volumes
Can be used with --filter dangling=true to list volumes not in use

`docker volumes create` - create volumes
Can set, `--name`, `--path`, `--mode`.  Can also be used with no
arguments to have everything auto generated

`docker volumes rm <volume name>` - Remove a volume
Volumes in use by containers cannot be removed.
Bind-mounts cannot be removed. (May want to have a way to remove just
the bind-mount config. Else this does seem to cause issues with tests)

`docker volumes inspect <volume name>` - Inspect a volume/get its config
Supports `--format` just like container inspect.

`docker run` can be used to either call a volume by name as `docker run
-v <volume name>:<mount point>` or with `docker run --volumes-from
<volume alias>:<mount point>[:<mode>]`
`docker run -v <path>` will create a volume with a generated name, just
as `docker volumes create` with no args.

All existing APIs/UI will work as normal.
There is no breakage in these changes.

Implements Proposal https://github.com/docker/docker/issues/8363
`JSON`