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.
Re: split decoding from conversion: Absolutely. Gob would make many things easier. I'd like to have multiple wire format possibilities. But in a different PR. :)

Re: decode doing multiple unmarshals. Agree it's not ideal, but the additional unmarshal should be much faster than a full object unmarshal, unless the yaml package is implemented oddly. I/we can look into changing this in the future, but I'd like to not do that in this PR, since we're already doing that today.