Integrate with queue.taskcluster.net

**Things changed here:**
 * I've added a few dependencies, `lodash`, `mime` and removed `ironmq`.
 * `queue.js`, implements logic for posting the queue,
 * `Worker` (from `worker.js`) implements worker functions to claim work which returns a `TaskRun`,
 * `TaskRun` (from `taskrun.js`) implements interface for holding, uploading artifacts, logs and reporting a given run of a task completed.
 * `taskconsumer.js` implements the main loop, fetching `TaskRun` instances,
 * `runtask.js` implements the logic to handle an instance of `TaskRun`, ie. execute the task and report things,
 * Middleware have been refactored, so that middleware feature flag name and default value is declared in the middleware file.
 * Middleware no have events: `start`, `extractLogs` and `extractResult`.
 * `test/testworker.js` will launch a worker instance in the background with a unqiue `workerType`, submit tasks, fetch results and allow you to write tests for the result. This is how integration tests are written now.
 * `test/listener.js` implements a few features for `testworker.js` used to listen to RabbitMQ exchanges. These could be generalized more...

**Not completed yet**
 * `bin/worker-cli` which posts tasks is not ported yet, I'm not sure it's important, as posting a task should give us `taskId` and then we could just build web UI for viewing the log. Anyways, it's certainly possible to implement this as it was. Let me know if you would like that.

**Future Refactoring/Features**
 * `test/listener.js`, `worker.js`, `testrun.js` and `queue.js` should live in a subfolder as these are all about interfacing the queue (from a workers perspective)... Maybe they could even live in a separate node package.
 * Middleware should be rewritten, the chain-of-responsibility pattern is great for handling HTTP request and UI events, but things like creating logs and uploading artifacts should not be executed sequentially. So we should rethink this...
 * We're currently not validating uploaded JSON against schemas, this should be easy to implement in `testrun.js`, we can just fetch the schemas from schemas.taskcluster.net when the application launches.


**Note**, I haven't tested this on AWS yet, there might be an issue, `metadata.js` which fetches information from ec2 metadata service have been tested independently, but I would still be surprised if it just works.