Add `ModelMetadata.HasNonDefaultEditFormat` property and related fixes

- see individual commits and bug #844 for details

/cc @pranavkm
This looks pretty crappy indirection that's just easy to get wrong. Isn't there a simpler way to code this up?