Load From BackingStore in Constructor

There are a number of problems with the UserDB::read() method. See UserDB::read(): What If Done Twice? for an obvious symptom of a design mismatch.

Apparently UserDB works best if it loads its contents from a BackingStore at most once.

This is best accomplished by passing it a BackingStore instance in its constructor. The constructor loads the internal store, and the read() method can be removed.

If the constructor would also store the BackingStore in a private member, write() could be relieved from all its arguments. Maybe write() should also be renamed to sync() which would be a better name IMHO.