Allow configuring the root project and branch

This change introduces plugin config options to allow changing the
default root project and branch. All-Projects:refs/meta/config usually
has restricted permissions, so admins have to get involved to get task
config updates merged. Currently, permissions on refs/meta/config have
to be relaxed so that task config devs can read/push on that ref.

Having a custom root project and branch will allow organizations to
provide a self-service model for task config updates without involving
admins. They will no longer need to relax permissions on All-projects
and refs/meta/config as it can be a security concern. Additionally,
configuring customized labels, submit requirements and other plugin
configs (for example code-owners) for task config devs on All-Projects
cannot be done without impacting all other projects on the server as
they inherit from All-Projects. A document detailing the requirements
for task config development has been added as well which attempts to
highlight the need for allowing custom root project and branch.

Test framework has been updated such that the entire test suite now
runs on both the default and custom root project and branch.

Change-Id: I77fafe7e6a5347e68f6a4f097caa0b0d9421cdb7
28 files changed