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).
Last ever breakage unless we need to change names or split resources.  Keyspace is overkill I think, but perhaps we'd like to adjust the registry names coincidentally at this time for future proofing?  I.e. is "kubelet" really the correct key name for this item?