idempotent computed default properties

When a default value or function is provided for a property, state should only
consult the default once.  It should then set the value from the default and
return that value on subsequent calls.

Corrects issues #60