Allow a prototypal value of null to indicate that a property should be deserialized as an object. Addresses issue #215
Addresses issue #188:
 - attributes are now reflected to property values at runtime, not only at create time. The rules are the same, the attribute is deserialized to the data type of the property in the element's prototype.
 - `published` properties are now reflected to attributes at runtime. This is done via observation and all published properties are now observed. Properties are serialized directly to strings and object and undefined valued
properties are ignored.