Separate creation and start - fixes 598, 301

Fixes #598 (and somewhat accidently #301).
A minor quibble I have with this and some of the other `VolumeService`-using code we have is that it calls `startService` but neither of the other two methods of `IService`.  This seems like a bit of an abuse of the interface.  Since `VolumeService` doesn't implement any of the other methods this causes us no problems at the moment but I wonder if we should either stop pretending `VolumeService` is an `IService`-kind-of-thing or if we should go further in actually using this interface correctly.