flatten newProps before setting values

fixes DAQ-604

this has some big implications since it's actually kind of hard to tell
when we need to treat an object as something we need to recurse into.
provide means to override setting individual prop

pertains to siq/mesh#24
added asSettable onError handler

pertains to siq/mesh#24
make sure nested prop changes still tracked

if `{foo: {bar: 123}}` is set, then the 'changes' object should include
both 'foo' and 'foo.bar'.

pertains to DAQ-604