fmt.Printf: fix bug in handling of %#v.
nice side effect: slices now obey their format verb. example:
	fmt.Printf("%q\n", []string{"a"})

R=rsc
CC=golang-dev
https://golang.org/cl/1729045
diff --git a/src/pkg/fmt/format.go b/src/pkg/fmt/format.go
index 62fc9ff..3ec1cf1 100644
--- a/src/pkg/fmt/format.go
+++ b/src/pkg/fmt/format.go
@@ -43,14 +43,13 @@
 	wid  int
 	prec int
 	// flags
-	widPresent    bool
-	precPresent   bool
-	minus         bool
-	plus          bool
-	sharp         bool
-	space         bool
-	zero          bool
-	preserveFlags bool // don't clear flags after this print; used to carry over in complex prints
+	widPresent  bool
+	precPresent bool
+	minus       bool
+	plus        bool
+	sharp       bool
+	space       bool
+	zero        bool
 }
 
 func (f *fmt) clearflags() {
@@ -120,9 +119,6 @@
 	if right > 0 {
 		f.writePadding(right, padding)
 	}
-	if !f.preserveFlags {
-		f.clearflags()
-	}
 }
 
 // append s to buf, padded on left (w > 0) or right (w < 0 or f.minus).
@@ -140,9 +136,6 @@
 	if right > 0 {
 		f.writePadding(right, padding)
 	}
-	if !f.preserveFlags {
-		f.clearflags()
-	}
 }
 
 func putint(buf []byte, base, val uint64, digits string) int {
@@ -345,7 +338,6 @@
 func (f *fmt) fmt_c64(v complex64, verb int) {
 	f.buf.WriteByte('(')
 	r := real(v)
-	f.preserveFlags = true
 	for i := 0; ; i++ {
 		switch verb {
 		case 'e':
@@ -359,7 +351,6 @@
 		case 'G':
 			f.fmt_G32(r)
 		}
-		f.preserveFlags = false
 		if i != 0 {
 			break
 		}
@@ -373,7 +364,6 @@
 func (f *fmt) fmt_c128(v complex128, verb int) {
 	f.buf.WriteByte('(')
 	r := real(v)
-	f.preserveFlags = true
 	for i := 0; ; i++ {
 		switch verb {
 		case 'e':
@@ -387,7 +377,6 @@
 		case 'G':
 			f.fmt_G64(r)
 		}
-		f.preserveFlags = false
 		if i != 0 {
 			break
 		}