tryConsume

Consumes one token if any is available, refilling first based on elapsed time. Returns true when the caller may proceed.