Support `[DisplayFormat(DataFormatString="{format})]` and address related TODOs

- see individual commits and bug #844 for details

/cc @pranavkm
@pranavkm this method evaluates the `EditFormatString` property.  Only three cases: (a)  `ComputeEditFormatString()` was already called, (b) the getter calls `ComputeEditFormatString()`, or (c) some user code used the setter.  Since we expect users to also set `HasNonDefaultEditFormat` in case (c), there's no ordering issue here.