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.
I thought of that, too-- having a "Meta" interface, which JSONBase implements. It doesn't really help, because we'd still have to use reflection to find the thing that implements the Meta interface, and we'd have to implement that interface in the JSONBase of all the different versions.

I also considered making an object like this and encoding/decoding it:

```
type Encoded struct {
  Kind string
  Version string
  Object interface{} `json:",inline"`
}
```

I think this might actually work pretty well with the JSON package, which lets you defer decoding... hm. But the YAML package's custom setters are (IMO) terrible, and YAML is what we use to decode...

...Object might be repeating the Kind and Version fields, which may or may not be a problem.