allow updating by switching to a branch

For #1018

Make update work for switching branches on a git repo.

Behavior (when updating via git):
* `./manage.py update` - will do a git pull, then migration stuff
* `./manage.py update branch_name` - will do a fetch on all remotes, then checkout the branch (may not be tracking--depends on your setup)
* `./manage.py update remote/branch_name` - will do a fetch on all remotes, then checkout the branch as a tracking branch

Testing:
* Test with both local and remote branches.

@jamalex Do you have time to try this out and review?