Change the onDidChange / observe arguments 

Support passing no keypath
Rework defaults and user loading to notify per path
Add spec for update event on load
Fix specs
always set, only emit when values differ