Rework PointerNullState APIs

These now return Formulas instead of BoolValues, which drops the requirement
to be atomic bools, and opens the door to true/false becoming Formula primitives
rather than Atoms in the framework (and formula simplification).

The connection between nonnull annotations and the is_null property is now
expressed as a global invariant, so it works properly when is_null is neither
exactly true/false nor unconstrained - i.e. when it's restricted by a symbolic
nullability variable in inference.

PiperOrigin-RevId: 567282695
Change-Id: I2e8ac1c173c8bb1526a357d3eafc08935ec8a2da
diff --git a/nullability/BUILD b/nullability/BUILD
index 0ee6158..7b06d42 100644
--- a/nullability/BUILD
+++ b/nullability/BUILD
@@ -100,6 +100,7 @@
         "//nullability/test:__pkg__",
     ],
     deps = [
+        ":type_nullability",
         "@llvm-project//clang:analysis",
         "@llvm-project//clang:ast",
         "@llvm-project//clang:basic",
@@ -112,6 +113,7 @@
     srcs = ["pointer_nullability_test.cc"],
     deps = [
         ":pointer_nullability",
+        ":type_nullability",
         "@llvm-project//clang:analysis",
         "@llvm-project//clang:ast",
         "@llvm-project//clang:basic",