Sketch: per-api-version defaults

regarding #1502
If we do go down this route, I'm not at all convinced this is correct behavior.

* Apply defaults to versioned or internal structs? I would expect only internal.
* When to apply defaults? I'd expect anything that is converted to internal gets defaults applied.
* When to remove defaults? I'd expect that converting back to versioned struct gets defaults removed. (client code might do versioned -> internal -> change -> versioned operations and still expect to diff.)