Add Budget to simplify check out logic and reduce sqlalchemy time

The tracker is spending a lot of time in SQLAlchemy preparing the SQL expressions and ORM instances. This pull request adds a Budget class that keeps track of item available and IP addresses in memory. It greatly simplifies the queries and adds a fast path for users who run too much concurrency.

Some sanity check or review would be appreciated.