allow undefined default value for optional params - fixes issue #12

This diverges from the implied assumption that instances are precisely serializable to/from JSON.
We rely on JavaScript object semantics to determine if a value has been declared undefined, as
opposed to being undeclared, information that is lost during serialization.