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.
The implication here is that we also do two unmarshals per DecodeInto - so the larger objects get, the more expensive the first (relatively simple) unmarshal becomes.

Would it not be more correct to attempt to unmarshal the input data into the specified object, and then attempt to verify that the types don't match?  I'm thinking here about places where sets of objects are decoded together (list etcd -> list api response) - we're going to be doing N*2 decodes, N conversions, and N encodes.  Would it not be more appropriate to try and decode into obj, check the type, and if necessary perform any conversions?

I see the scope of this potentially becoming a streaming decoder (for watch style responses and requests) - how much more complex does that implementation become?