Decode/Encode everywhere

Necessary for Brendan's upcoming api versioning PR. This is a fixed version of #567.

All types stored in etcd are now API objects.
>This means I made an api.ContainerManifestList, and added a JSONBase to endpoints (and changed Name to JSONBase.ID).
Correct me if I'm wrong, but this is schema change in etcd (kubelet will no longer correctly deserialize the old format)?  Do we need to do something concrete to warn users of the old schema and inform them they need to reschedule everything?  Or should we have a deprecated code bath that handles the old deserialization?