Use taskcluster base (and accept jlals improvements)

So, this turned out to be a major detour... It's possible that we could have done authentication without `taskcluster-base` and all of this refactoring. But it would have been a sad thing to do.

In the process of doing taskcluster-base we move completely away from global state. We have a lot testing of various utilities in `taskcluster-base`. For example, the queue only has JSON definitions for how to publish AMQP messages, making it pointless to write a test that checks that the `Publisher` constructed can publish messages.

Highlights:
 * No global state
 * Use of taskcluster-base with many reuseable components
 * Mostly configured in JSON
 * Very little code duplication (mostly JSON configuration)
 * Reaper is now a background process (so we can scale queue to more nodes without getting problems from this)
 * All of @lightsofapollo's changes from PR #13 

With regards to authentication, all we need to do is to enable it is:
 1. Update everybody who tasks to the queue with credentials
 2. Add `scopes` to `v1.js`
 3. Fix tests to authenticate
 4. Add mock authentication server to `taskcluster-base` for testing.

I think we should start with updating the components that talk to the queue. This should be fairly easy. Once this is deployed, I'll update `taskcluster-client` with API references from the queue so we can get started.

**Note** there might still be a few things to fix when deploying this as we need to modify configuration keys on heroku. So please ping when you're ready to merge this.