Fork API types.

All tests pass (for now...)  Rebasing this PR is a _pain_
My thought was that when that happens, externalize will have to take a version parameter.  We can add that now if it aids clarity.

The old code didn't handle this correctly either, it just placed the conversion in the package.

Probably the right thing to do is to move externalize into the v1beta1 package, and reference it from here.

We can do that in a second pass.