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.
Nevermind on the previous question - saw that this is the default.  Next question - wouldn't this be more appropriate as a method on MIF?  Seems like calling Convert is overkill since we just need accessors on obj.