bpo-36842: Implement PEP 578 (GH-12613)

Adds sys.audit, sys.addaudithook, io.open_code, and associated C APIs.
diff --git a/Parser/parsetok.c b/Parser/parsetok.c
index 55fd7f7..a5d7897 100644
--- a/Parser/parsetok.c
+++ b/Parser/parsetok.c
@@ -94,6 +94,11 @@
     if (initerr(err_ret, filename) < 0)
         return NULL;
 
+    if (PySys_Audit("compile", "yO", s, err_ret->filename) < 0) {
+        err_ret->error = E_ERROR;
+        return NULL;
+    }
+
     if (*flags & PyPARSE_IGNORE_COOKIE)
         tok = PyTokenizer_FromUTF8(s, exec_input);
     else
@@ -165,6 +170,10 @@
     if (initerr(err_ret, filename) < 0)
         return NULL;
 
+    if (PySys_Audit("compile", "OO", Py_None, err_ret->filename) < 0) {
+        return NULL;
+    }
+
     if ((tok = PyTokenizer_FromFile(fp, enc, ps1, ps2)) == NULL) {
         err_ret->error = E_NOMEM;
         return NULL;