Make teuthology.config *far* more robust

In addition to parsing its configuration from a yaml file, it can now be
created from a dict. It can also be dumped as a dict, or as a yaml
stream. It is also now split into multiple classes so that the same
implementation can be used for job configs, and not just as a proxy for
~/.teuthology.yaml.

Signed-off-by: Zack Cerza <zack.cerza@inktank.com>
Use the new JobConfig object

Signed-off-by: Zack Cerza <zack.cerza@inktank.com>
Store the suite_branch in the job config

Signed-off-by: Zack Cerza <zack.cerza@inktank.com>
If --suite-dir is passed, use its suite_branch

If it has none use the ceph branch

Signed-off-by: Zack Cerza <zack.cerza@inktank.com>
Add GitPython to requirements.txt

Signed-off-by: Zack Cerza <zack.cerza@inktank.com>
Add src_base_path to defaults.

Defaults to ~/src

Signed-off-by: Zack Cerza <zack.cerza@inktank.com>
Use config.src_base_path

Signed-off-by: Zack Cerza <zack.cerza@inktank.com>
Clone ceph-qa-suite and add it to PYTHONPATH

So that teuthology runs can find their tasks

Signed-off-by: Zack Cerza <zack.cerza@inktank.com>
Tweak fetch_teuthology_branch match

Specifically, make it match fetch_qa_suite()'s behavior.

Signed-off-by: Zack Cerza <zack.cerza@inktank.com>