Allow runtime.Object to be encoded as runtime.RawExtension

Adds a 'List' type that contains arbitrary objects.  Includes various
cleanup to conversion, including the ability to get a specific error for
unrecognized types.