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.
Remove unused import.
Fix non-relative import.
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.