Fork API types.

All tests pass (for now...)  Rebasing this PR is a _pain_
I agree-- the interface for externalize should take the destination version as an additional parameter. I think we can change that later, though. As for placing the translation functions in the v1betaX packages, that may be possible-- I'm OK with it as long as only the api package has to include those other packages. I want to contain the ugly translations and keep it separate from the rest of the codebase as much as possible.