API, robustness and cleanliness improvements for local dpxdt

Highlights:
- Local dpxdt finally seems to be killing child processes of the setup script. The trick was putting the shell script in its own process group, as per [this SO question](http://stackoverflow.com/a/4791612/388951).
- Factored out `SetupStep` into its own class to simplify its Workflow.
- Changed `waitFor` to use `process_worker.ProcessWorkflow`.
- Added `url` and `timeout_secs` options to `waitFor`, which simplifies the most common use of this feature (waiting for a server to start).
- Split `RunTestsWorkflowItem` into many smaller `WorkflowItem`s

Closes #94, #98.