Fixes a test-breaking aspect of 60aa9f7, which is that while it made
setting an absent value to "undefined" work, doing so would cause an
invalidation that didn't happen before.
While we're at it, clean up the code and make sure that setting an
absent key to 'undefined' does invalidate "all()".
Unit tests in "session" and "reactive-dict" now pass.
Checking that `self.keyValueDeps[key]` exists is important here.
Also remove alignment, remove comment. (Deleting the key isn't
"clean-up", it's what actually does the work! Clean-up would be
removing Deps, but that is tricky and for another day.)
A variable named `oldKeys` doesn't make sense if it's just an alias for
`self.keys`.
This is pure behavior-preserving clean-up, removing a cryptic comment
and adding a test. Note that `self.keys[key]` is either absent or
a string, which has been true since this code was written, so there
was never any reason for this code or comment to be written this way.
Setting a ReactiveDict value to `undefined` does not remove it, and
undefined values are migrated. Therefore, it is odd that setting
'foo' to `undefined` on the empty dict does not produce the dict
`{foo: undefined}`, but setting 'foo' first to another value and *then*
`undefined` does. So, we fix that.
This means that setting a value to `undefined` blocks `setDefault` on
that key, which makes sense given that setting the value to 123 and then
`undefined` blocks `setDefault` on that key.
We attempted to set default values for cordova-plugin-statusbar at
runtime. Because the plugin may not have been loaded at that point,
this gave inconsistent results. Instead, we now set the default options
while building, so they will get added to config.xml.
Fixes#5098
This ensures adequate implemenations of APIs like Object.create are
available in IE8, so that packages like ecmascript-collections can depend
on those APIs without completely breaking the simplest of apps in IE8.