add more preferences tests

General work on our preference store:

 * PreferenceStore becomes an interface
 * there's a concrete implementation backed by chrome.storage, and one backed by Dart maps
 * pref stores now have a notion of dirty state. You can flush() the state explicitly. Chrome stores also flush themselves 1 minutes after the last modification. This prevents too many writes to the chrome sync store.

These changes will help us better manage persisting UI state across sessions. @keertip