Implement graceful shutdown
Add optional timeout for graceful shutdown
Fix nit-picks, and broken Queue.shutdown()
[minor] Replace useless 'self', with 'this'
[minor] remove unused variable
[minor] remove unused variable
Make Queue.shutdown()'s callback optional.

...also explicitly null-out a Worker's job if its .shutdown() times out.
Make sure workers get GC'd on shutdown
[bugfix] Make 'this' available to fn() in shutdown
[bugfix] Make 'this' available to worker bindings
Fix regression causing shutdown to not wait on all workers
Remove unnecessary wrapper functions
Add graceful shutdown example
Fix race condition with blpop/zpop flow & shutdown
Emit 'job failed' so worker can shut down properly
Fix edge-case shutdown/blpop race condition

Race scenario:
- Line 178 has been run, and we're waiting on a BLPOP to call line 179.
- shutdown() is called
- After shutdown() has finished, the process doesn't quit
- Another job is pushed into the queue
  - This is an edge case, but one that will realistically happen
- If we don't .end() the job type's redis client, line 179 will get
  called, and q:<type>:jobs won't be synced w/ q:jobs:<type>:inactive.
- If we .end() the client, line 179 won't get called incorrectly.

We can safely .end() the job type's client immediately (as opposed to
this.client), because it's only used to call BLPOP. If we've shut down,
this.running == false, and we won't ever use that client again (line 64)
Fix edge-case shutdown timeout exception

If shutdown() times out while we're waiting on line 178's zpop or 184's
Job.get(), then this.job==true. So let's make sure this.job.failed exists
before trying to call it.
Delete type-specific client after calling .end()

This makes it so you can safely shutdown() kue, then start it back up
again w/o stopping the process
Export remove function for events
Removing an event from the events Job map at job.remove(), not when any
message is emitted other than "progress"