Deletes old jobs, addresses search term race conditions, and adds "indexing"

Three proposed fixes in this pull request:

1. Solves race conditions inherent in indexing. As discussed in LearnBoost/kue#94 and LearnBoost/kue#98, jobs may incorrectly be removed before search indexes have completed. I add an "is_indexed" parameter and force that to be true for removal. If it is not true, the remove function listens for the event via pubsub and processes once is_indexed has been called.

2. Adds "indexing" capabilities as discussed in LearnBoost/kue#217. Namely, auto-indexing all fields does not make sense for a job queue. Job constructor now includes third parameter `indexes`. When undefined, operates traditionally (for backwards-compatibility), a blank string indexes only the job type, otherwise, indexes only specified keys. Keys are separated by spaces. For example 'key3 key21 key33'.

3. Removes old jobs based on type and expiration (addresses LearnBoost/kue#58).

```javascript
var kue = require('kue'),
   , jobs = kue.createQueue();

// Creates a job with indexes for fname and lname
var jobOptions = { indexes : 'fname lname', expires : true };
var job = jobs.create('test-job', { uId : '12345671', fname : 'flying', lname : 'squirrel'}, jobOptions);

// Sets an expiration on test-jobs (5 seconds)
jobs.setExpiration('test-job', 5000);

job.save(function(err) {
  // Finds the job based on indexed terms only
  jobs.find('test-job flying', function(err, ids) { console.log(ids) });  
});

// After 5 seconds, item is auto-removed, including search terms
jobs.on('job complete', function(id) {
  setTimeout(function() {
    kue.Job.get(id, function(err, job) {
      // Job will already have been deleted
    });
  }, 6000);
});
```

Furthermore, the state of Redis will look like this (assuming no other jobs):
```
redis 127.0.0.1:6379> KEYS *
1) "q:stats:work-time"
2) "q:ids"
3) "q:job:types"
```

Finally, I don't have access to the testing suite, but tried to run it through a number of scenarios ahead of submitting the pull request.

Brandon