encoding/openapi: implement structural schema

See https://kubernetes.io/blog/2019/06/20/crd-structural-schema/

This is needed to make generated schema compliant with CRDs.

Structural schema are momentarily enabled by requesting to
expand references. Even when not expanding, the generator
will strive to normalize the schema somewhat, however.

Change-Id: I36fc8bc0d0e41d1b47b8bed55462ab9d07cfc26f
Reviewed-on: https://cue-review.googlesource.com/c/cue/+/2803
Reviewed-by: Jason Wang <jasonwzm@google.com>
Reviewed-by: Marcel van Lohuizen <mpvl@golang.org>
diff --git a/encoding/openapi/testdata/oneof-funcs.json b/encoding/openapi/testdata/oneof-funcs.json
index dd0755e..157b53c 100644
--- a/encoding/openapi/testdata/oneof-funcs.json
+++ b/encoding/openapi/testdata/oneof-funcs.json
@@ -8,9 +8,9 @@
       "schemas": {
          "MYSTRING": {
             "description": "Randomly picked description from a set of size one.",
+            "type": "object",
             "oneOf": [
                {
-                  "type": "object",
                   "required": [
                      "exact"
                   ],
@@ -23,7 +23,6 @@
                   }
                },
                {
-                  "type": "object",
                   "required": [
                      "regex"
                   ],