Make IMVU.optionalProperty() return the default value if property is explicitly set to undefined

This means you can no longer pass "undefined" as an explicitly set value, but
it fixes the most obvious way to pass a subset of args to a delegate function.
The former is weird enough and the latter common enough that I think this
change in behavior makes sense.

Note, though, that IMVU.requireProperty() does not work analogously...  It will
throw an exception if a property is missing from args, but it will return
undefined if the property is explicitly set to undefined.  We may want to
reexamine this behavior.
Add test for IMVU.requireProperty() argument passthrough

Document the difference in analogous behavior to IMVU.optionalProperty(),
possibly undesired.