Add an interface for discarding some ZKAPs
Fixes #235
As I was implementing this, I did realize that this still doesn't provide a full backup. "Spent" is one terminal state for unblinded tokens but it isn't the only one. "Some spending error" is also possible. The checkpoint scheme here will not keep such tokens backed up. Only the full copy of the database, done after each purchase, will cause that state to be backed up.
In other words, if some tokens cannot be spent for some reason, that reason will be lost unless a purchase-triggered full backup happens after the fact.
There are similar issues with other non-unblinded-token state. The lease maintenance spending table will not be kept up to date by the checkpoint either, for example.
Despite that, this is still a small incremental improvement (it allows a third-party like GridSync to at least back up the whole database sometimes whereas currently it never does) so I still think it should land. I'm filing other tickets to get us all the way to a good backup scheme.