Fix passing of error message from substream callback (#703)

Error messages from submessage callbacks were being
replaced with "callback failed".
diff --git a/pb_decode.c b/pb_decode.c
index 28059be..5405c87 100644
--- a/pb_decode.c
+++ b/pb_decode.c
@@ -761,7 +761,10 @@
         {
             prev_bytes_left = substream.bytes_left;
             if (!field->descriptor->field_callback(&substream, NULL, field))
-                PB_RETURN_ERROR(stream, "callback failed");
+            {
+                PB_SET_ERROR(stream, substream.errmsg ? substream.errmsg : "callback failed");
+                return false;
+            }
         } while (substream.bytes_left > 0 && substream.bytes_left < prev_bytes_left);
         
         if (!pb_close_string_substream(stream, &substream))