Proposal for solving api plugability

* In the conversion package, expose Src/Dest struct tags to conversionFuncs via the Scope, and the source/dest versions.
* In runtime, add "RawExtension" which just stores raw JSON (or yaml?) for deferred unpacking.
* In runtime, add global named Schemes.
* In runtime, add to the DefaultScheme conversionFuncs which convert between RawExtension and EmbeddedObject. They use a struct tag on the *internal* structure to determine which scheme to use, defaulting to DefaultScheme.

I think this is easy, readable, extensible, and will emit the JSON that we want.
So the net JSON comes out largely the same as  http://play.golang.org/p/YOOumEKG5t with one notable difference: the redundant "apiVersion" field.  The difference is that http://play.golang.org/p/YOOumEKG5t seems VASTLY simpler.  Convince me I am wrong?

Both of these suffer from a major problem: kubelet (the primary consumer of many of the plugins) does not keep in-memory state at all, which means we will have to decode and re-decode these all every time.  Not a killer, I guess, but sort of obnoxious...