More modularization and refactoring:

- Move ssh and shell commands to their own file.
- Use classes to represent test suites; factor out some common code.
- Add Cluster class for encapsulating interaction with a Spark cluster.