Added the field name to all CodedOutputStream.Write??? calls
Refactored 'speed' generated write of arrays to call Write???Array.  This may
have impacted speed write speeds for arrays of non-reference types due to the
use of non-generic IEnumerable and the subsequent boxing of value types.  This
could be addressed later if desired.
diff --git a/src/ProtocolBuffers.Test/TestProtos/UnitTestCustomOptionsProtoFile.cs b/src/ProtocolBuffers.Test/TestProtos/UnitTestCustomOptionsProtoFile.cs
index 157286c..0cfb0ad 100644
--- a/src/ProtocolBuffers.Test/TestProtos/UnitTestCustomOptionsProtoFile.cs
+++ b/src/ProtocolBuffers.Test/TestProtos/UnitTestCustomOptionsProtoFile.cs
@@ -453,7 +453,7 @@
     public override void WriteTo(pb::CodedOutputStream output) {

       int size = SerializedSize;

       if (HasField1) {

-        output.WriteString(1, Field1);

+        output.WriteString(1, "field1", Field1);

       }

       UnknownFields.WriteTo(output);

     }

@@ -2332,13 +2332,13 @@
       int size = SerializedSize;

       pb::ExtendableMessage<ComplexOptionType1, ComplexOptionType1.Builder>.ExtensionWriter extensionWriter = CreateExtensionWriter(this);

       if (HasFoo) {

-        output.WriteInt32(1, Foo);

+        output.WriteInt32(1, "foo", Foo);

       }

       if (HasFoo2) {

-        output.WriteInt32(2, Foo2);

+        output.WriteInt32(2, "foo2", Foo2);

       }

       if (HasFoo3) {

-        output.WriteInt32(3, Foo3);

+        output.WriteInt32(3, "foo3", Foo3);

       }

       extensionWriter.WriteUntil(536870912, output);

       UnknownFields.WriteTo(output);

@@ -2650,7 +2650,7 @@
         public override void WriteTo(pb::CodedOutputStream output) {

           int size = SerializedSize;

           if (HasWaldo) {

-            output.WriteInt32(1, Waldo);

+            output.WriteInt32(1, "waldo", Waldo);

           }

           UnknownFields.WriteTo(output);

         }

@@ -2874,13 +2874,13 @@
       int size = SerializedSize;

       pb::ExtendableMessage<ComplexOptionType2, ComplexOptionType2.Builder>.ExtensionWriter extensionWriter = CreateExtensionWriter(this);

       if (HasBar) {

-        output.WriteMessage(1, Bar);

+        output.WriteMessage(1, "bar", Bar);

       }

       if (HasBaz) {

-        output.WriteInt32(2, Baz);

+        output.WriteInt32(2, "baz", Baz);

       }

       if (HasFred) {

-        output.WriteMessage(3, Fred);

+        output.WriteMessage(3, "fred", Fred);

       }

       extensionWriter.WriteUntil(536870912, output);

       UnknownFields.WriteTo(output);

@@ -3236,7 +3236,7 @@
         public override void WriteTo(pb::CodedOutputStream output) {

           int size = SerializedSize;

           if (HasPlugh) {

-            output.WriteInt32(3, Plugh);

+            output.WriteInt32(3, "plugh", Plugh);

           }

           UnknownFields.WriteTo(output);

         }

@@ -3445,10 +3445,10 @@
     public override void WriteTo(pb::CodedOutputStream output) {

       int size = SerializedSize;

       if (HasQux) {

-        output.WriteInt32(1, Qux);

+        output.WriteInt32(1, "qux", Qux);

       }

       if (HasComplexOptionType5) {

-        output.WriteGroup(2, ComplexOptionType5);

+        output.WriteGroup(2, "complexoptiontype5", ComplexOptionType5);

       }

       UnknownFields.WriteTo(output);

     }

@@ -3720,7 +3720,7 @@
     public override void WriteTo(pb::CodedOutputStream output) {

       int size = SerializedSize;

       if (HasXyzzy) {

-        output.WriteInt32(7593951, Xyzzy);

+        output.WriteInt32(7593951, "xyzzy", Xyzzy);

       }

       UnknownFields.WriteTo(output);

     }