refactored the ecosystem startup code to use mixins
move the raising of CalledProcessError into the wait() method
wait() will not raise an exception if the noerr parameter is True
create DistributedServer.register() convenience function
Create DistributedServer.readmodel() convenience function
refactor SameVersionTests to use readmodel