New tests, double build errors, and a few miscellaneous fixes
diff --git a/src/ProtocolBuffers/DynamicMessage.cs b/src/ProtocolBuffers/DynamicMessage.cs
index 4b3a406..16a7f31 100644
--- a/src/ProtocolBuffers/DynamicMessage.cs
+++ b/src/ProtocolBuffers/DynamicMessage.cs
@@ -296,7 +296,7 @@
       }
 
       public override DynamicMessage Build() {
-   	    if (!IsInitialized) {
+        if (fields != null && !IsInitialized) {
           throw new UninitializedMessageException(new DynamicMessage(type, fields, unknownFields));
         }
         return BuildPartial();
@@ -315,6 +315,9 @@
       }
 
       public override DynamicMessage BuildPartial() {
+        if (fields == null) {
+          throw new InvalidOperationException("Build() has already been called on this Builder.");
+        } 
         fields.MakeImmutable();
         DynamicMessage result = new DynamicMessage(type, fields, unknownFields);
         fields = null;