cue: disallow bulk optional fields with other fields

This change is the first step to change the semantics
of bulk optional fields to apply only to additional fields.
The first step is to encourage bulk optional fields to be
in a struct with any other field.

`cue fmt` now rewrites violating bulk optional fields by
wrapping them in a embedded struct, which is
equivalent.

TestDiff was changed to ensure that diff will identify
the two forms as equivalent.

Issue #339

Change-Id: I52753ff9854598394726585b85b3c27caad85458
Reviewed-on: https://cue-review.googlesource.com/c/cue/+/5781
Reviewed-by: Marcel van Lohuizen <mpvl@golang.org>
diff --git a/pkg/tool/os/os.cue b/pkg/tool/os/os.cue
index d7e4322..6881bd9 100644
--- a/pkg/tool/os/os.cue
+++ b/pkg/tool/os/os.cue
@@ -29,14 +29,14 @@
 Setenv: {
 	$id: "tool/os.Setenv"
 
-	[Name]: Value
+	{[Name]: Value}
 }
 
 // Getenv gets and parses the specific command line variables.
 Getenv: {
 	$id: "tool/os.Getenv"
 
-	[Name]: Value
+	{[Name]: Value}
 }
 
 // Environ populates a struct with all environment variables.
@@ -47,7 +47,7 @@
 	// Individual entries may be specified ahead of time to enable
 	// validation and parsing. Values that are marked as required
 	// will fail the task if they are not found.
-	[Name]: Value
+	{[Name]: Value}
 }
 
 // Clearenv clears all environment variables.