Abstract base class for state provider implementations. Providers are stores
of String->String pairs, so that a given String key may be used to persist a
String value, and that same key later can be used to load that value again.
An empty string should be considered no value at all, so setValue(key, "") is
equivalent to setValue(key, null), as to clear(key).