Fork API types.

All tests pass (for now...)  Rebasing this PR is a _pain_
Suggest that we use "" to mean internal - same rule that I made for the Kind: field. Set on the wire, blank in memory, because it's implicit in the go type. This will mean much less changes to tests.