Split api package.

This change moves all of the generic functionality out of pkg/api and into pkg/conversion. This is one of the steps necessary to making #700 a reality.

No functionality is changed, even though it's a lot of code changes. In particular, the api package tests all still pass unchanged.

I feel like after we do this, we can refocuse the api package--move a bunch of stuff from tools into api, for example.
Is it an "apiVersion", or just a "version".  I.e. are we converting API objects, or just an opaque mechanism that an API consumer can use to version objects?  Would argue for calling them "version" and removing some of the "API" mentions if so.