update protocol library to new reflection API.
update golden files.

R=rsc
CC=dsymonds
http://codereview.appspot.com/1698044
diff --git a/proto/properties.go b/proto/properties.go
index 960329a..3258217 100644
--- a/proto/properties.go
+++ b/proto/properties.go
@@ -229,6 +229,7 @@
 	case *reflect.PtrType:
 		switch t2 := t1.Elem().(type) {
 		default:
+		BadType:
 			fmt.Fprintf(os.Stderr, "proto: no encoder function for %T -> %T\n", t1, t2)
 			break
 		case *reflect.BoolType:
@@ -236,26 +237,36 @@
 			p.dec = (*Buffer).dec_bool
 			p.alignof = unsafe.Alignof(vbool)
 			p.sizeof = unsafe.Sizeof(vbool)
-		case *reflect.Int32Type, *reflect.Uint32Type:
-			p.enc = (*Buffer).enc_int32
-			p.dec = (*Buffer).dec_int32
-			p.alignof = unsafe.Alignof(vint32)
-			p.sizeof = unsafe.Sizeof(vint32)
-		case *reflect.Int64Type, *reflect.Uint64Type:
-			p.enc = (*Buffer).enc_int64
-			p.dec = (*Buffer).dec_int64
-			p.alignof = unsafe.Alignof(vint64)
-			p.sizeof = unsafe.Sizeof(vint64)
-		case *reflect.Float32Type:
-			p.enc = (*Buffer).enc_int32 // can just treat them as bits
-			p.dec = (*Buffer).dec_int32
-			p.alignof = unsafe.Alignof(vfloat32)
-			p.sizeof = unsafe.Sizeof(vfloat32)
-		case *reflect.Float64Type:
-			p.enc = (*Buffer).enc_int64 // can just treat them as bits
-			p.dec = (*Buffer).dec_int64
-			p.alignof = unsafe.Alignof(vfloat64)
-			p.sizeof = unsafe.Sizeof(vfloat64)
+		case *reflect.IntType, *reflect.UintType:
+			switch t2.Bits() {
+			case 32:
+				p.enc = (*Buffer).enc_int32
+				p.dec = (*Buffer).dec_int32
+				p.alignof = unsafe.Alignof(vint32)
+				p.sizeof = unsafe.Sizeof(vint32)
+			case 64:
+				p.enc = (*Buffer).enc_int64
+				p.dec = (*Buffer).dec_int64
+				p.alignof = unsafe.Alignof(vint64)
+				p.sizeof = unsafe.Sizeof(vint64)
+			default:
+				goto BadType
+			}
+		case *reflect.FloatType:
+			switch t2.Bits() {
+			case 32:
+				p.enc = (*Buffer).enc_int32 // can just treat them as bits
+				p.dec = (*Buffer).dec_int32
+				p.alignof = unsafe.Alignof(vfloat32)
+				p.sizeof = unsafe.Sizeof(vfloat32)
+			case 64:
+				p.enc = (*Buffer).enc_int64 // can just treat them as bits
+				p.dec = (*Buffer).dec_int64
+				p.alignof = unsafe.Alignof(vfloat64)
+				p.sizeof = unsafe.Sizeof(vfloat64)
+			default:
+				goto BadType
+			}
 		case *reflect.StringType:
 			p.enc = (*Buffer).enc_string
 			p.dec = (*Buffer).dec_string
@@ -275,38 +286,51 @@
 	case *reflect.SliceType:
 		switch t2 := t1.Elem().(type) {
 		default:
-			fmt.Fprintf(os.Stderr, "proto: no oenc for %T -> %T\n", t1, t2)
+		BadSliceType:
+			fmt.Fprintf(os.Stderr, "proto: no slice oenc for %T = []%T\n", t1, t2)
 			break
-		case *reflect.Uint8Type:
-			p.enc = (*Buffer).enc_slice_byte
-			p.dec = (*Buffer).dec_slice_byte
-			p.alignof = unsafe.Alignof(vbyte)
-			p.sizeof = startSize * unsafe.Sizeof(vbyte)
 		case *reflect.BoolType:
 			p.enc = (*Buffer).enc_slice_bool
 			p.dec = (*Buffer).dec_slice_bool
 			p.alignof = unsafe.Alignof(vbool)
 			p.sizeof = startSize * unsafe.Sizeof(vbool)
-		case *reflect.Int32Type, *reflect.Uint32Type:
-			p.enc = (*Buffer).enc_slice_int32
-			p.dec = (*Buffer).dec_slice_int32
-			p.alignof = unsafe.Alignof(vint32)
-			p.sizeof = startSize * unsafe.Sizeof(vint32)
-		case *reflect.Int64Type, *reflect.Uint64Type:
-			p.enc = (*Buffer).enc_slice_int64
-			p.dec = (*Buffer).dec_slice_int64
-			p.alignof = unsafe.Alignof(vint64)
-			p.sizeof = startSize * unsafe.Sizeof(vint64)
-		case *reflect.Float32Type:
-			p.enc = (*Buffer).enc_slice_int32 // can just treat them as bits
-			p.dec = (*Buffer).dec_slice_int32
-			p.alignof = unsafe.Alignof(vfloat32)
-			p.sizeof = startSize * unsafe.Sizeof(vfloat32)
-		case *reflect.Float64Type:
-			p.enc = (*Buffer).enc_slice_int64 // can just treat them as bits
-			p.dec = (*Buffer).dec_slice_int64
-			p.alignof = unsafe.Alignof(vfloat64)
-			p.sizeof = startSize * unsafe.Sizeof(vfloat64)
+		case *reflect.IntType, *reflect.UintType:
+			switch t2.Bits() {
+			case 32:
+				p.enc = (*Buffer).enc_slice_int32
+				p.dec = (*Buffer).dec_slice_int32
+				p.alignof = unsafe.Alignof(vint32)
+				p.sizeof = startSize * unsafe.Sizeof(vint32)
+			case 64:
+				p.enc = (*Buffer).enc_slice_int64
+				p.dec = (*Buffer).dec_slice_int64
+				p.alignof = unsafe.Alignof(vint64)
+				p.sizeof = startSize * unsafe.Sizeof(vint64)
+			case 8:
+				if t2.Kind() == reflect.Uint8 {
+					p.enc = (*Buffer).enc_slice_byte
+					p.dec = (*Buffer).dec_slice_byte
+					p.alignof = unsafe.Alignof(vbyte)
+					p.sizeof = startSize * unsafe.Sizeof(vbyte)
+				}
+			default:
+				goto BadSliceType
+			}
+		case *reflect.FloatType:
+			switch t2.Bits() {
+			case 32:
+				p.enc = (*Buffer).enc_slice_int32 // can just treat them as bits
+				p.dec = (*Buffer).dec_slice_int32
+				p.alignof = unsafe.Alignof(vfloat32)
+				p.sizeof = startSize * unsafe.Sizeof(vfloat32)
+			case 64:
+				p.enc = (*Buffer).enc_slice_int64 // can just treat them as bits
+				p.dec = (*Buffer).dec_slice_int64
+				p.alignof = unsafe.Alignof(vfloat64)
+				p.sizeof = startSize * unsafe.Sizeof(vfloat64)
+			default:
+				goto BadSliceType
+			}
 		case *reflect.StringType:
 			p.enc = (*Buffer).enc_slice_string
 			p.dec = (*Buffer).dec_slice_string
@@ -315,7 +339,7 @@
 		case *reflect.PtrType:
 			switch t3 := t2.Elem().(type) {
 			default:
-				fmt.Fprintf(os.Stderr, "proto: no oenc for %T -> %T -> %T\n", t1, t2, t3)
+				fmt.Fprintf(os.Stderr, "proto: no ptr oenc for %T -> %T -> %T\n", t1, t2, t3)
 				break
 			case *reflect.StructType:
 				p.stype = t2
@@ -329,11 +353,11 @@
 				p.sizeof = startSize * unsafe.Sizeof(vslice)
 			}
 		case *reflect.SliceType:
-			switch t3 := t2.Elem().(type) {
+			switch t2.Elem().Kind() {
 			default:
-				fmt.Fprintf(os.Stderr, "proto: no oenc for %T -> %T -> %T\n", t1, t2, t3)
+				fmt.Fprintf(os.Stderr, "proto: no slice elem oenc for %T -> %T -> %T\n", t1, t2, t2.Elem())
 				break
-			case *reflect.Uint8Type:
+			case reflect.Uint8:
 				p.enc = (*Buffer).enc_slice_slice_byte
 				p.dec = (*Buffer).dec_slice_slice_byte
 				p.alignof = unsafe.Alignof(vslice)