after and exchange with James Clark it appeared I had bug in URI parsing

* test/xsdtest/xsdtest.xml uri.c: after and exchange with James
  Clark it appeared I had bug in URI parsing code ...
* relaxng.c include/libxml/relaxng.h: completely revamped error
  reporting to not loose message from optional parts.
* xmllint.c: added timing for RNG validation steps
* result/relaxng/*: updated the result, all error messages changed
Daniel
diff --git a/uri.c b/uri.c
index ffdad9f..70aee47 100644
--- a/uri.c
+++ b/uri.c
@@ -1463,8 +1463,10 @@
      * try first to parse it as a server string.
      */
     ret = xmlParseURIServer(uri, str);
-    if (ret == 0)
+    if ((ret == 0) && (*str != NULL) &&
+	((**str == 0) || (**str == '/') || (**str == '?')))
         return(0);
+    *str = cur;
 
     /*
      * failed, fallback to reg_name
@@ -2020,7 +2022,7 @@
 	p++;
     }
 #else
-    uri->path = (char *) xmlStrdup((const char *) path);
+    uri->path = (char *) xmlStrdup((const xmlChar *) path);
 #endif
     
     ret = xmlSaveUri(uri);