Adds a store factory

Create the store by passing in a scope, name, and default value. The current value is are fetched from localStorage, and changes to the object are synched with localStorage. The value is JSON stringified, so only store primative/simple values and the value must be an object.

Includes changes from #869