Refactor `DockerTest` module and structure
We should split the DockerTest struct into two distinct types, one that holds the user config, and one that runs the test engine. That way, the structure of the dockertest
module can become more readable. I suggest creating a engine
or runner
module that wraps the logic of running the test.