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.
job: save the real exception when unpickling fails

We raise our own exception which hides the real error (often an ImportError),
making it difficult to see what happend. Instead, save the original exception
too.
Make inner_exception optional, and use new except syntax.
Patch the connection instances.

This patches the connection object (which is either a StrictRedis
instance or a Redis instance), to have alternative class methods that
behave exactly like their StrictRedis counterparts, no matter whether
which type the object is.  Only the ambiguous methods are patched.  The
exhaustive list:

- _zadd          (fixes argument order)
- _lrem          (fixes argument order)
- _setex         (fixes argument order)
- _pipeline      (always returns a StrictPipeline)
- _ttl           (fixes return value)
- _pttl          (fixes return value)

This makes it possible to call the methods reliably without polluting
the RQ code any further.
Bump version to 0.3.5.
Add release date.
Prepare for 0.3.6.
Prevent against 'created_at' field being None.
Attach job ID when unpickling fails in .dequeue().

This makes the behaviour consistent with .dequeue_any().
Requeuing a job should set its status back to Queued.
Merge branch 'master' of github.com:selwin/rq
Merge pull request #177 from selwin/master

FailedQueue.requeue should set job status back to Queued
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).