Create Git exception class
Keep local versions of git repos in pushmanager

Add method to clone or update a git repository
Allow multiple task type in GitQueue

Instead of just verifying that branches exist, Git now also has the option to
test pickmes. So that we can queue this, GitQueue needs to be changed to take
a GitQueueTask which can be one of:

- VERIFY_BRANCH: check that a branch can be found and is not a duplicate
- TEST_PICKME_CONFLICT: check which (if any) branches also pickme'd for the
    same push cause merge conflicts with this branch

This also renames the update_request methods in core.git to verify_branch,
so the tests need to be updated appropriately.
Create context managers for branching and merging

To handle setup/teardown of test branch creation and testing whether merges
break, create two context managers.
Test pickmed branches for conflicts, save results

Create method queued by the pickme servlet that checks that pickme against other
pickmes in the same push. Tag any pickes that fail to merge on top as conflicts
Send email and XMPP notifications on conflict
Display conflict text on website, add tag colours

Encode the 'conflicts' database field into the JSON representation of a request.
Set colours for the conflict-master and conflict-pickme tags
Style the Conflicts section on the request detail div
Switch from Threading to Multiprocess

Avoid global locking if git takes too long
Add option to clone with reference
More thorough tests
Add pushplan to create Conflicts column in db

Add SQL commands needed to create / rollback the 'Conflicts' column in
the push_requests DB field.
Remove commiting from GitMergeContextManager

Instead of performing a merge within the __init__ of the GitMergeContextManager,
only create the state needed for the merge to happen, and break merging out into
it's own method.
Add thorough submodule conflict detection

Fully flesh out submodule conflict resolution based on the merge-branches push
helper script.
Don't sent email on requeued conflict

In order to prevent a deluge of emails from co-requeued pickmes, don't sent XMPP
or email messages to the user if a conflict was detected with no-requeue set.
Conflicts will still be recorded and tagged.
Add no-conflict marker
Fixup: no parens
Fixup: dont use with_statement