Staging branch feature

Staging branch allows user to move changes to staging branch for further
testing before they are merged into repository. Staging branches are located
in folder refs/staging/<branch>. <branch> matches branch under refs/heads.

A REST style API is used to stage/unstage a patch:

To merge a patch to staging:
   /changes/{id}/revisions/{sha1}/stage
To remove a patch from staging:
   /changes/{id}/revisions/{sha1}/unstage

A staging branch is moved to testable build with SSH commands. Build refs
are under refs/builds.

Staging branch is updated in the following situations
 - User moves a new change to staging. The change is merged to staging branch.
 - User creates a new build. Staging is re-created from refs/heads.
 - User merges a build to refs/heads. The staging branch is updated to match
   the updated head.

Changes include: new button in change screen to stage/unstage (triggering REST
API call), new category called 'staging', SSH commands for managing staging and
build branches.

Change-Id: I4334f50f0bf74606bbbd6bff553fee6e4f019b49
Reviewed-by: Ismo Haataja <ismo.haataja@digia.com>