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/AddressBook/AddressBookProtos.cs b/src/AddressBook/AddressBookProtos.cs
index 38029ac..8b4ac02 100644
--- a/src/AddressBook/AddressBookProtos.cs
+++ b/src/AddressBook/AddressBookProtos.cs
@@ -155,10 +155,10 @@
         public override void WriteTo(pb::CodedOutputStream output) {

           int size = SerializedSize;

           if (HasNumber) {

-            output.WriteString(1, Number);

+            output.WriteString(1, "number", Number);

           }

           if (HasType) {

-            output.WriteEnum(2, (int) Type);

+            output.WriteEnum(2, "type", (int) Type, Type.ToString());

           }

           UnknownFields.WriteTo(output);

         }

@@ -431,16 +431,16 @@
     public override void WriteTo(pb::CodedOutputStream output) {

       int size = SerializedSize;

       if (HasName) {

-        output.WriteString(1, Name);

+        output.WriteString(1, "name", Name);

       }

       if (HasId) {

-        output.WriteInt32(2, Id);

+        output.WriteInt32(2, "id", Id);

       }

       if (HasEmail) {

-        output.WriteString(3, Email);

+        output.WriteString(3, "email", Email);

       }

-      foreach (global::Google.ProtocolBuffers.Examples.AddressBook.Person.Types.PhoneNumber element in PhoneList) {

-        output.WriteMessage(4, element);

+      if (phone_.Count > 0) {

+        output.WriteMessageArray(4, "phone", phone_);

       }

       UnknownFields.WriteTo(output);

     }

@@ -774,8 +774,8 @@
     

     public override void WriteTo(pb::CodedOutputStream output) {

       int size = SerializedSize;

-      foreach (global::Google.ProtocolBuffers.Examples.AddressBook.Person element in PersonList) {

-        output.WriteMessage(1, element);

+      if (person_.Count > 0) {

+        output.WriteMessageArray(1, "person", person_);

       }

       UnknownFields.WriteTo(output);

     }