Overhaul how expirations are stored.
Storage is now done through a StorageAdapter interface, which specifies how to save and load expirations. There are two adapters provided: one that saves nowhere and one that saves in a gob file (to mimic the original behaviour of this package.) Code using the old expiration store will automatically migrate to the new store format on load/save.
Showing with 213 additions and 60 deletions