Taskcluster

This patch has three important parts:

- the `taskgraph.json`
- the new `tests/taskcluster` folder which contains all the logic used to generate what is run on CI
- the docker image where the tests are run in `builds/docker/gaia-taskenv`
We don't nessecarily want to use the head of the target branch for this kind of testing.  Instead we should use the base ref from the PR to merge on top of.  The issue that I am concerned about can be demonstrated by the following scenario:

1) john submits PR against master branch
2) taskcluster freezes for 3 hours
3) in the meantime, master branch changes in a way that breaks john's PR
4) testing happens using tip of master branch

The issue here is that the test is not done against the code that john was expecting.