Upgrade mocha to add support for promises

Starting with mocha 1.18, asynchronous tests can simply
return a promise instead of calling the `done()` argument.
This allows for less duplication and more redable tests
Use promises instead of async tests in test_job.js
Fix bug in job.fromData

It should return job options as an object instead of a string
Prefer promises over async tests in test_queue.js
Add timeout option to queue.add

It lets the user specify a timeout in ms, after which the job should
be failed.