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.