Avoid exceptions for Property objects known to have a value.

When setting a property, we know that the property has a value, by
using a sub-type for such 'safe' properties we can avoid having to
deal with potential exceptions that we know will not be thrown.