Replace update.sh functionality

Currently we internally use a couple shell scripts to parse arguments and make sure a copy of ```ceph-qa-suite``` are checkout out before we run ```teuthology-suite```. That always seemed brittle and, more importantly, not fair to the community since those tools were kept out-of-tree. This PR adds the same functionality to teuthology itself.
this is the `checkout_repo` function that clones and or updates and checks out branches?

The function is breaking the contract as to what is doing. Since you are only talking about git here, `checkout` should checkout to a branch and that's it. But in the docstring you explain that this does a bunch of things, making it confusing if someone was to use this api.

Separating the different git commands that do exactly as the function says it will would make the API and the contract between the signature and the action much solid.