Add time check to lease call

This is ugly and hacky and I don't know how to test this.

PROBLEM:
Occasionally the lease task will run right up to it's deadline (within
1/10 sec) and then return an empty list when there ARE tasks in the
queue. This seems to happen when there is a lot of read/write contention
on the queue.

HACKY SOLUTION:
Check the length of the call and we're within that deadline window and
we get an empty list, then raise a TransientError (which also is a sign
of queue contention issues).

POTENTIAL AVENUES OF INVESTIGATION:
See if this problem happens when leasing asynchronously.
Complain to google to throw a DeadLineExceededError (which I've NEVER
seen in this context)
Sit in a corner and cry.
Fix a test and flip a condition
Merge branch 'lease_deadline' into time_check
Change exception to DeadlineExceededError
Add test for time_check
Merge pull request #96 from tannermiller-wf/time_check

Time check