Add schedule_suite.sh functionality to teuthology-suite

Some of this is just refactoring ```teuthology.schedule``` so that I could actually add functionality to it without adding complexity to an already scarily-complex module. But a lot of it is also new code. I added some tests where it seemed reasonable.
```get_hash``` can return ```None```, yes. I'll add that info to its docstring.