An abstraction of a setting that is both observable and stateful
Shared preference that will be used for persistence
Default value to return
Readonly observable to listen for changes for the setting
Allow you to set a value for the setting or access a snapshot value of the setting