Bead Bidirectional typechecking for arbitrary-rank types. Mostly adapted from this MSR paper. Naming Bi-Directional. BD. "Bead".