patch from Stéphane Bidoul for better per context error message APIs

* xmlreader.c python/drv_libxml2.py python/generator.py
  python/libxml.c python/libxml.py python/libxml_wrap.h
  python/types.c: patch from Stéphane Bidoul for better per
  context error message APIs
* python/tests/ctxterror.py python/tests/readererr.py:
  update of the tests
Daniel
diff --git a/python/tests/ctxterror.py b/python/tests/ctxterror.py
index 44589cd..265bb1e 100755
--- a/python/tests/ctxterror.py
+++ b/python/tests/ctxterror.py
@@ -9,20 +9,22 @@
 # Memory debug specific
 libxml2.debugMemory(1)
 
-expect="""--> Opening and ending tag mismatch: x and y
+expect="""--> (3) xmlns: URI foo is not absolute
+--> (4) Opening and ending tag mismatch: x and y
 """
 
 err=""
-def callback(ctx, str):
-     global err
+def callback(arg,msg,severity,reserved):
+    global err
+    err = err + "%s (%d) %s" % (arg,severity,msg)
 
-     err = err + "%s %s" % (ctx, str)
-
-s = """<x></y>"""
+s = """<x xmlns="foo"></y>"""
 
 parserCtxt = libxml2.createPushParser(None,"",0,"test.xml")
-parserCtxt.registerErrorHandler(callback, "-->")
-parserCtxt.registerWarningHandler(callback, "-->")
+parserCtxt.setErrorHandler(callback, "-->")
+if parserCtxt.getErrorHandler() != (callback,"-->"):
+    print "getErrorHandler failed"
+    sys.exit(1)
 parserCtxt.parseChunk(s,len(s),1)
 doc = parserCtxt.doc()
 doc.freeDoc()
@@ -37,8 +39,7 @@
 i = 10000
 while i > 0:
     parserCtxt = libxml2.createPushParser(None,"",0,"test.xml")
-    parserCtxt.registerErrorHandler(callback, "-->")
-    parserCtxt.registerWarningHandler(callback, "-->")
+    parserCtxt.setErrorHandler(callback, "-->")
     parserCtxt.parseChunk(s,len(s),1)
     doc = parserCtxt.doc()
     doc.freeDoc()
diff --git a/python/tests/readererr.py b/python/tests/readererr.py
index abbbba5..dbdeb47 100644
--- a/python/tests/readererr.py
+++ b/python/tests/readererr.py
@@ -13,14 +13,14 @@
 --> (4) test1:1:Opening and ending tag mismatch: c and a
 """
 err=""
-def myErrorHandler(arg,msg,line,col,URI,severity):
+def myErrorHandler(arg,msg,severity,locator):
     global err
-    err = err + "%s (%d) %s:%d:%s" % (arg,severity,URI,line,msg)
+    err = err + "%s (%d) %s:%d:%s" % (arg,severity,locator.BaseURI(),locator.LineNumber(),msg)
 
 f = StringIO.StringIO("""<a xmlns="foo"><b b1="b1"/><c>content of c</a>""")
 input = libxml2.inputBuffer(f)
 reader = input.newTextReader("test1")
-reader.setErrorHandler(myErrorHandler,"-->")
+reader.SetErrorHandler(myErrorHandler,"-->")
 while reader.Read() == 1:
     pass
 
@@ -30,9 +30,9 @@
     print "expected %s" %(expect)
     sys.exit(1)
 
-reader.setErrorHandler(None,None)
-if reader.getErrorHandler() != (None,None):
-    print "getErrorHandler failed"
+reader.SetErrorHandler(None,None)
+if reader.GetErrorHandler() != (None,None):
+    print "GetErrorHandler failed"
     sys.exit(1)
 
 #