Timeouts

Timeout can be specified when enqueueing a job:

```javascript
queue.enqueue('timeoutTest', { test: 'data' }, { timeoutMS: 10 }, done);
```

The workers themselves will monitor for timeouts and treat them as failures. I added a "watchdog" to look for timeouts due to process crashes where the worker can't update the job status.

There are two options for the watchDog that can be specified when creating a queue:

* timeoutInterval - How often to poll for timed out jobs (default 5 seconds)
* timeoutGracePeriod - The amount of time to wait after the timeout before treating the job as timed out (default 10 seconds) (prevents a race condition with the worker timing the job out itself)