Initial split of internal and external api types.

Or another way of putting it: I think the model in this PR is we serve the latest version, and auto up-convert old requests. But this model is broken, because clients depend on a particular version. We have to give a v1beta1 client v1beta1 responses. I know it doesn't matter for this versioning, but for future ones it will be much easier if we have a system in place.