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.
Yeah, most of them are now in `taskcluster-base` :)

Which means, we can keep them in sync across all of our modules.