Add function to interface to allow enabling/disabling error/debug output for the format parses

This makes the `-d` option work in plistutil that wasn't doing anything
diff --git a/include/plist/plist.h b/include/plist/plist.h
index 0a21499..f955d5e 100644
--- a/include/plist/plist.h
+++ b/include/plist/plist.h
@@ -1094,6 +1094,13 @@
      */
     void plist_mem_free(void* ptr);
 
+    /**
+     * Set debug level for the format parsers.
+     *
+     * @param debug Debug level. Currently, only 0 (off) and 1 (enabled) are supported.
+     */
+    void plist_set_debug(int debug);
+
     /*@}*/
 
 #ifdef __cplusplus
diff --git a/src/bplist.c b/src/bplist.c
index ff0b399..72040cc 100644
--- a/src/bplist.c
+++ b/src/bplist.c
@@ -227,6 +227,11 @@
     /* deinit binary plist stuff */
 }
 
+void plist_bin_set_debug(int debug)
+{
+    plist_bin_debug = debug;
+}
+
 static plist_t parse_bin_node_at_index(struct bplist_data *bplist, uint32_t node_index);
 
 static plist_t parse_int_node(const char **bnode, uint8_t size)
diff --git a/src/jplist.c b/src/jplist.c
index 99a8877..8ed7398 100644
--- a/src/jplist.c
+++ b/src/jplist.c
@@ -64,6 +64,11 @@
     /* deinit JSON stuff */
 }
 
+void plist_json_set_debug(int debug)
+{
+    plist_json_debug = debug;
+}
+
 #ifndef HAVE_STRNDUP
 static char* strndup(const char* str, size_t len)
 {
diff --git a/src/oplist.c b/src/oplist.c
index 287d5a2..1781962 100644
--- a/src/oplist.c
+++ b/src/oplist.c
@@ -63,6 +63,11 @@
     /* deinit OpenStep plist stuff */
 }
 
+void plist_ostep_set_debug(int debug)
+{
+    plist_ostep_debug = debug;
+}
+
 #ifndef HAVE_STRNDUP
 static char* strndup(const char* str, size_t len)
 {
diff --git a/src/plist.c b/src/plist.c
index 689fc79..8d57416 100644
--- a/src/plist.c
+++ b/src/plist.c
@@ -1497,6 +1497,19 @@
     return (memmem(data->buff, data->length, cmpval, n) != NULL);
 }
 
+extern void plist_xml_set_debug(int debug);
+extern void plist_bin_set_debug(int debug);
+extern void plist_json_set_debug(int debug);
+extern void plist_ostep_set_debug(int debug);
+
+PLIST_API void plist_set_debug(int debug)
+{
+    plist_xml_set_debug(debug);
+    plist_bin_set_debug(debug);
+    plist_json_set_debug(debug);
+    plist_ostep_set_debug(debug);
+}
+
 PLIST_API void plist_sort(plist_t plist)
 {
     if (!plist) {
diff --git a/src/xplist.c b/src/xplist.c
index 1abc46d..bd506fb 100644
--- a/src/xplist.c
+++ b/src/xplist.c
@@ -102,6 +102,11 @@
     /* deinit XML stuff */
 }
 
+void plist_xml_set_debug(int debug)
+{
+    plist_xml_debug = debug;
+}
+
 static size_t dtostr(char *buf, size_t bufsize, double realval)
 {
     size_t len = 0;
diff --git a/tools/plistutil.c b/tools/plistutil.c
index 1c199fe..4b83df3 100644
--- a/tools/plistutil.c
+++ b/tools/plistutil.c
@@ -184,6 +184,11 @@
         return 0;
     }
 
+    if (options->flags & OPT_DEBUG)
+    {
+        plist_set_debug(1);
+    }
+
     if (!options->in_file || !strcmp(options->in_file, "-"))
     {
         read_size = 0;