Canged CodedInputStream.ReadTag to use boolean result with out params to
support reading a field name rather than a field tag.
diff --git a/src/ProtocolBuffers.Test/TestProtos/UnitTestCustomOptionsProtoFile.cs b/src/ProtocolBuffers.Test/TestProtos/UnitTestCustomOptionsProtoFile.cs
index c300e20..73a1781 100644
--- a/src/ProtocolBuffers.Test/TestProtos/UnitTestCustomOptionsProtoFile.cs
+++ b/src/ProtocolBuffers.Test/TestProtos/UnitTestCustomOptionsProtoFile.cs
@@ -581,7 +581,7 @@
         while (input.ReadTag(out tag, out field_name)) {

           switch (tag) {

             case 0: {

-              throw InvalidProtocolBufferException.InvalidTag();

+              throw pb::InvalidProtocolBufferException.InvalidTag();

             }

             default: {

               if (pb::WireFormat.IsEndGroupTag(tag)) {

@@ -787,7 +787,7 @@
         while (input.ReadTag(out tag, out field_name)) {

           switch (tag) {

             case 0: {

-              throw InvalidProtocolBufferException.InvalidTag();

+              throw pb::InvalidProtocolBufferException.InvalidTag();

             }

             default: {

               if (pb::WireFormat.IsEndGroupTag(tag)) {

@@ -970,7 +970,7 @@
         while (input.ReadTag(out tag, out field_name)) {

           switch (tag) {

             case 0: {

-              throw InvalidProtocolBufferException.InvalidTag();

+              throw pb::InvalidProtocolBufferException.InvalidTag();

             }

             default: {

               if (pb::WireFormat.IsEndGroupTag(tag)) {

@@ -1168,7 +1168,7 @@
         while (input.ReadTag(out tag, out field_name)) {

           switch (tag) {

             case 0: {

-              throw InvalidProtocolBufferException.InvalidTag();

+              throw pb::InvalidProtocolBufferException.InvalidTag();

             }

             default: {

               if (pb::WireFormat.IsEndGroupTag(tag)) {

@@ -1351,7 +1351,7 @@
         while (input.ReadTag(out tag, out field_name)) {

           switch (tag) {

             case 0: {

-              throw InvalidProtocolBufferException.InvalidTag();

+              throw pb::InvalidProtocolBufferException.InvalidTag();

             }

             default: {

               if (pb::WireFormat.IsEndGroupTag(tag)) {

@@ -1534,7 +1534,7 @@
         while (input.ReadTag(out tag, out field_name)) {

           switch (tag) {

             case 0: {

-              throw InvalidProtocolBufferException.InvalidTag();

+              throw pb::InvalidProtocolBufferException.InvalidTag();

             }

             default: {

               if (pb::WireFormat.IsEndGroupTag(tag)) {

@@ -1717,7 +1717,7 @@
         while (input.ReadTag(out tag, out field_name)) {

           switch (tag) {

             case 0: {

-              throw InvalidProtocolBufferException.InvalidTag();

+              throw pb::InvalidProtocolBufferException.InvalidTag();

             }

             default: {

               if (pb::WireFormat.IsEndGroupTag(tag)) {

@@ -1900,7 +1900,7 @@
         while (input.ReadTag(out tag, out field_name)) {

           switch (tag) {

             case 0: {

-              throw InvalidProtocolBufferException.InvalidTag();

+              throw pb::InvalidProtocolBufferException.InvalidTag();

             }

             default: {

               if (pb::WireFormat.IsEndGroupTag(tag)) {

@@ -2083,7 +2083,7 @@
         while (input.ReadTag(out tag, out field_name)) {

           switch (tag) {

             case 0: {

-              throw InvalidProtocolBufferException.InvalidTag();

+              throw pb::InvalidProtocolBufferException.InvalidTag();

             }

             default: {

               if (pb::WireFormat.IsEndGroupTag(tag)) {

@@ -2266,7 +2266,7 @@
         while (input.ReadTag(out tag, out field_name)) {

           switch (tag) {

             case 0: {

-              throw InvalidProtocolBufferException.InvalidTag();

+              throw pb::InvalidProtocolBufferException.InvalidTag();

             }

             default: {

               if (pb::WireFormat.IsEndGroupTag(tag)) {

@@ -2511,7 +2511,7 @@
         while (input.ReadTag(out tag, out field_name)) {

           switch (tag) {

             case 0: {

-              throw InvalidProtocolBufferException.InvalidTag();

+              throw pb::InvalidProtocolBufferException.InvalidTag();

             }

             default: {

               if (pb::WireFormat.IsEndGroupTag(tag)) {

@@ -2811,7 +2811,7 @@
             while (input.ReadTag(out tag, out field_name)) {

               switch (tag) {

                 case 0: {

-                  throw InvalidProtocolBufferException.InvalidTag();

+                  throw pb::InvalidProtocolBufferException.InvalidTag();

                 }

                 default: {

                   if (pb::WireFormat.IsEndGroupTag(tag)) {

@@ -3059,7 +3059,7 @@
         while (input.ReadTag(out tag, out field_name)) {

           switch (tag) {

             case 0: {

-              throw InvalidProtocolBufferException.InvalidTag();

+              throw pb::InvalidProtocolBufferException.InvalidTag();

             }

             default: {

               if (pb::WireFormat.IsEndGroupTag(tag)) {

@@ -3403,7 +3403,7 @@
             while (input.ReadTag(out tag, out field_name)) {

               switch (tag) {

                 case 0: {

-                  throw InvalidProtocolBufferException.InvalidTag();

+                  throw pb::InvalidProtocolBufferException.InvalidTag();

                 }

                 default: {

                   if (pb::WireFormat.IsEndGroupTag(tag)) {

@@ -3624,7 +3624,7 @@
         while (input.ReadTag(out tag, out field_name)) {

           switch (tag) {

             case 0: {

-              throw InvalidProtocolBufferException.InvalidTag();

+              throw pb::InvalidProtocolBufferException.InvalidTag();

             }

             default: {

               if (pb::WireFormat.IsEndGroupTag(tag)) {

@@ -3893,7 +3893,7 @@
         while (input.ReadTag(out tag, out field_name)) {

           switch (tag) {

             case 0: {

-              throw InvalidProtocolBufferException.InvalidTag();

+              throw pb::InvalidProtocolBufferException.InvalidTag();

             }

             default: {

               if (pb::WireFormat.IsEndGroupTag(tag)) {

@@ -4098,7 +4098,7 @@
         while (input.ReadTag(out tag, out field_name)) {

           switch (tag) {

             case 0: {

-              throw InvalidProtocolBufferException.InvalidTag();

+              throw pb::InvalidProtocolBufferException.InvalidTag();

             }

             default: {

               if (pb::WireFormat.IsEndGroupTag(tag)) {