Design sketch for #289

- Defines `volumes` data in `IDockerClient` tests
- Replaces the `incomplete_units` hack in `FakeDockerClient.list` with a straight set of the `Unit`s.
- Makes `volumes` in a `Unit` a `frozenset` instead of a `tuple`
- Returns real volume data from the data returned by the Docker API in `DockerClient.list`

The above are tested in `IDockerClientTests.test_added_is_listed`, providing both fake and functional testing via the existing mixin.

Moving this design sketch forward to a complete implementation and resolution of #289 will need at least:

- Change to `Deployer.discover_node_configuration` that currently sets an `AttachedVolume` mountpoint to `None`.
- Change to `FlockerConfiguration` - `lenient` should now be redundant
- Change to `marshal_configuration` - volume information can now be included.
- Change to docstring of `AttachedVolume` model - `None` should now never be a mountpoint value.
- Changes to the unit and functional tests around all of these to remove null mountpoints and swap missing volume data for actual volume data.
Oh, huh. I guess given the current requirement that application name matches volume name, we don't actually need to do any fancy parsing to find the volume name.