Implemented more advanced TokensWithBudget

Added LockFreeQueue implementation
TokensWithBudget2 keeps a secondary list so that it can instantly start
its next list while a background thread fills in the new secondary list.
It also writes overflow tokens to a number of files (one for each
window) and keeps file handles to all of them open at all times to keep
from stalling on fopen calls