Refactor dequeue_any to accept arbitrary timeouts

The 'blocking' parameter was replaced with a 'timeout' parameter.

The timeout parameter is interpreted thus:
    0 - no timeout (block forever, equivalent to blocking=True)
    None - non-blocking (return value or None immediately, equivalent to
                         blocking=False)
    <integer> - maximum seconds to block

Upon timing out, a dequeue operation will raise DequeueTimeout.
Set worker ttl and maintain it when idle/taking/finishing jobs

This change could use far better test coverage, but I'm not sure how to
test it without refactoring more of the code than I think is reasonable
in the scope of this work.
Merge branch 'master' into yaniv-aknin-worker_ttl
Avoid negative timeouts when default_worker_ttl is < 60.
Fix typos.
Log the act of sending a heartbeat (DEBUG level).
Prevent the use of indefinite timeouts.

Using them would really mess with the new expiring worker keys (they
would disappear, even though the workers aren't dead).
Update changelog.
Add rq.contrib.legacy.cleanup_ghosts() function, to clean up old mess.
Ignore a job when there isn't a "data" key available.
Safe fetching a deleted job removes the deleted job from queue.
Merge pull request #181 from selwin/del-on-nosuchjob

Safe fetching a deleted job removes the deleted job from queue.
Allow rqworker to run more silently.
Update changelog.
Bump version to 0.3.6.
Prepare for next 0.3.x version.
Remove .env.fish.
Moved some logic from worker.perform_job() to job.cleanup().
Remove unused import.
Merge branch 'selwin-master'