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.
Also, is decoding the same problem as conversion?  Seems like these could be profitably split (or at least kept separate) - right now the only serialization format this can support is JSON/YAML - can that be lifted out of Scheme and the MIF cleanly?