refactor(precompiler): give optimize/invalidation_mode flags default values (#2180)

This allows one to actually run this script with *just* these flags:
src, src_name, pyc

Extra: refactor how the enum member is parsed
diff --git a/tools/precompiler/precompiler.py b/tools/precompiler/precompiler.py
index ae7339a..310f2eb 100644
--- a/tools/precompiler/precompiler.py
+++ b/tools/precompiler/precompiler.py
@@ -24,8 +24,8 @@
 
 def _create_parser() -> "argparse.Namespace":
     parser = argparse.ArgumentParser(fromfile_prefix_chars="@")
-    parser.add_argument("--invalidation_mode")
-    parser.add_argument("--optimize", type=int)
+    parser.add_argument("--invalidation_mode", default="CHECKED_HASH")
+    parser.add_argument("--optimize", type=int, default=-1)
     parser.add_argument("--python_version")
 
     parser.add_argument("--src", action="append", dest="srcs")
@@ -40,10 +40,10 @@
 
 def _compile(options: "argparse.Namespace") -> None:
     try:
-        invalidation_mode = getattr(
-            py_compile.PycInvalidationMode, options.invalidation_mode.upper()
-        )
-    except AttributeError as e:
+        invalidation_mode = py_compile.PycInvalidationMode[
+            options.invalidation_mode.upper()
+        ]
+    except KeyError as e:
         raise ValueError(
             f"Unknown PycInvalidationMode: {options.invalidation_mode}"
         ) from e