Implement branch management strategy

Changes to upstream master are handled by the -upstream jobs. If the
test suite fails, we won't bother moving forward with a rebase. If it
succeeds, the -jiocloud job is triggered with "branch" and "commit"
parameters. If the branch is origin/master, we rebase on top of $commit
(to avoid a new change upstream that has landed in the mean time being
pulled in), run the tests and push to jiocloud/master if it all works
out.

Changes to jiocloud/devmaster is handled by the -jiocloud job. It simply
runs the tests, and if they pass, the branch is pushed *as-is* to
jiocloud/master. This is useful when resolving failed rebases as well as
for pushing critical fixes to production quickly.

Finally, I've attempted to prevent accidental overwrites of master by
detecting accidental clicks on the build button (by comparing current
and previous git commits).