Add ChainedDynamicProperty to provide property chaining functionality, where the head property determines the current value and the next property on the chain serves as the default if the head property does not have an acceptable value.

...here the head property determines the current value and the next property on the chain serves as the default if the head property does not have an acceptable value.