Fork API types.

All tests pass (for now...)  Rebasing this PR is a _pain_
I don't get it - once we have v1beta2, v1beta3, etc, how do you externalize to those? I liked that the first cut of this had the internalize/externalize in the v1beta1 package - that just seems "righter" to me.

I won't have time to re-review this this week, so I'll roll with whatever you and @lavalamp decide, but I don't get it yet :)