internal/third_party/yaml: parse into CUE ast

Also:
- remove support for parsing into Go-structs
- remove support for encoding
- add comment parsing
- port non-standard test harness to standard go
- add testdata
- fix some bugs related to merging

Change-Id: I7fbd2bed6f76bb5da8a309f8d3fb3fb6228048ab
diff --git a/internal/third_party/yaml/testdata/merge.out b/internal/third_party/yaml/testdata/merge.out
new file mode 100644
index 0000000..e3edf5a
--- /dev/null
+++ b/internal/third_party/yaml/testdata/merge.out
@@ -0,0 +1,69 @@
+// From http://yaml.org/type/merge.html
+// Test
+anchors list: [{
+	x: 1
+	y: 2
+}, {
+	x: 0
+	y: 2
+}, {
+	r: 10
+}, {
+	r: 1
+}]
+// All the following maps are equal:
+plain: {
+	// Explicit keys
+	x:     1
+	y:     2
+	r:     10
+	label: "center/big"
+}
+mergeOne: {
+	x: 1
+	y: 2
+	// Merge one map
+	r:     10
+	label: "center/big"
+}
+mergeMultiple: {
+	r: 10
+	x: 1
+	y: 2
+	// Merge multiple maps
+	label: "center/big"
+}
+override: {
+	r:     10
+	x:     1
+	y:     2
+	label: "center/big"
+}
+shortTag: {
+	r: 10
+	x: 1
+	y: 2
+	// Explicit short merge tag
+	label: "center/big"
+}
+longTag: {
+	r: 10
+	x: 1
+	y: 2
+	// Explicit merge long tag
+	label: "center/big"
+}
+inlineMap: {
+	// Inlined map
+	x:     1
+	y:     2
+	r:     10
+	label: "center/big"
+}
+inlineSequenceMap: {
+	// Inlined map in sequence
+	r:     10
+	x:     1
+	y:     2
+	label: "center/big"
+}
\ No newline at end of file
diff --git a/internal/third_party/yaml/testdata/merge.test b/internal/third_party/yaml/testdata/merge.test
new file mode 100644
index 0000000..733ba2b
--- /dev/null
+++ b/internal/third_party/yaml/testdata/merge.test
@@ -0,0 +1,54 @@
+# From http://yaml.org/type/merge.html
+# Test
+anchors:
+  list:
+    - &CENTER { "x": 1, "y": 2 }
+    - &LEFT   { "x": 0, "y": 2 }
+    - &BIG    { "r": 10 }
+    - &SMALL  { "r": 1 }
+
+# All the following maps are equal:
+
+plain:
+  # Explicit keys
+  "x": 1
+  "y": 2
+  "r": 10
+  label: center/big
+
+mergeOne:
+  # Merge one map
+  << : *CENTER
+  "r": 10
+  label: center/big
+
+mergeMultiple:
+  # Merge multiple maps
+  << : [ *CENTER, *BIG ]
+  label: center/big
+
+override:
+  # Override
+  << : [ *BIG, *LEFT, *SMALL ]
+  "x": 1
+  label: center/big
+
+shortTag:
+  # Explicit short merge tag
+  !!merge "<<" : [ *CENTER, *BIG ]
+  label: center/big
+
+longTag:
+  # Explicit merge long tag
+  !<tag:yaml.org,2002:merge> "<<" : [ *CENTER, *BIG ]
+  label: center/big
+
+inlineMap:
+  # Inlined map
+  << : {"x": 1, "y": 2, "r": 10}
+  label: center/big
+
+inlineSequenceMap:
+  # Inlined map in sequence
+  << : [ *CENTER, {"r": 10} ]
+  label: center/big
\ No newline at end of file