Dealing with Items that hit zero quantity

When an item is saved with a quantity of 0, we call delete() on it, but
this only deletes the database record. If save() is called again on this
in-memory Python instance, then it will resave in a new database row,
which is not what we want. We track whether or not an object has been
deleted on a per-instance basis and raise an Exception if save is called
again without explicit developer intent.