function TokenBucket(options) {
    assert.object(options, 'options');
    assert.number(options.capacity, 'options.capacity');
    assert.number(options.fillRate, 'options.fillRate');

    this.tokens = this.capacity = options.capacity;
    this.fillRate = options.fillRate;
    this.time = Date.now();
}
An implementation of the Token Bucket algorithm.

Basically, in network throttling, there are two "mainstream"
algorithms for throttling requests, Token Bucket and Leaky Bucket.
For restify, I went with Token Bucket.  For a good description of the
algorithm, see: http://en.wikipedia.org/wiki/Token_bucket

In the options object, you pass in the total tokens and the fill rate.
Practically speaking, this means "allow `fill rate` requests/second,
with bursts up to `total tokens`".  Note that the bucket is initialized
to full.

Also, in googling, I came across a concise python implementation, so this
is just a port of that. Thanks http://code.activestate.com/recipes/511490 !

@private
@class TokenBucket
@param {Object} options - contains the parameters:
                  - {Number} capacity the maximum burst.
                  - {Number} fillRate the rate to refill tokens.