Style compliance changes for existing code
Add Class Docstring

Add docstring to class, declaring the forms of gitaction that we will support.
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 pushplan to create Conflicts column in db

Add SQL commands needed to create / rollback the 'Conflicts' column in
the push_requests DB field.
Add thorough submodule conflict detection

Fully flesh out submodule conflict resolution based on the merge-branches push
helper script.
Add no-conflict marker
Merge pull request #66 from rschlaikjer/pull_request_4

Automatically check for merge conflicts

Merge conflict checks are done between:

* Pickme'd branches and master
* Pickme'd branches and other pickme'd branches for the same push

Whenever a request is pickme'd, a git action is queued that:

* Updates the local copy of master to current head
* Clones or updates the local copy of devs/$dev branch
* Creates a temporary test branch off master
* Attempts to merge the pickmed branch onto the test. If this fails, it marks the pickme as conflict-master
* If it does not conflict with master, it then applies every other pickme in the push on top of the test branch as well, checks if it works, and then reverts.
* All the pickmes that fail to merge are included in a 'conflicts' section on the pickme on pushmanager