Acceptance volume cmp 967

Fixes https://clusterhq.atlassian.net/browse/FLOC-967
@itamarst @exarkun another possible approach to make the tests pass is to change the `assert_expected_deployment` method in this branch's `flocker.acceptance.testtools` to use `flocker-reportstate` on each remote node and compare the applications and ports that are reported as existing, rather than trying to compare `Unit` instances with `Volume`s that cannot have their `node_path` known in advance (and for the purpose of acceptance testing the MongoDB tutorial, I can't see any reason why we care exactly what host path the volumes have been mounted in on the remote nodes).

IOW, a method that looks like this:

```
def assert_expected_deployment(test_case, expected_deployment):
    def assertApplications(results):
        for result in results:
            yaml, node, test_case, expected_deployment = result[1]
            state = safe_load(yaml)
            units = expected_deployment[node]
            for unit in units:
                test_case.assertIn(unit.name, state['applications'])
                test_case.assertEqual(
                    state['applications'][unit.name]['image'],
                    unit.container_image
                )
                for port in unit.ports:
                    test_case.assertIn(port.external_port, state['used_ports'])

    deferreds = []
    for node in expected_deployment.keys():
        deferreds.append(Deferred())

    dl = DeferredList(deferreds)
    dl.addCallback(assertApplications)

    for i, node in enumerate(expected_deployment.keys()):
        yaml = _run_SSH(22, 'root', node, [b"flocker-reportstate"], None)
        deferreds[i].callback([yaml, node, test_case, expected_deployment])

    return dl
```

What do you guys think? Workable, or barking up the wrong tree?