Allow runtime.Object to be encoded as runtime.RawExtension

Allows round tripping between objects that the schema recognizes and preserving those that don't. Adds a 'List' type that contains arbitrary objects.  Includes various cleanup to conversion, including the ability to get a specific error for unrecognized types.