bpart: Move kind enum into its intended place (#57385)
The original design for the BindingPartition datastructure had
->restriction and ->kind as separate non-atomic fields. However, to
support the old semantics, we created an intermediate state where both
the restriciton and the kind were placed into ->restriction as a
pointer-int-union (i.e. using the low three bits of the pointer to store
an int). In #57341, I removed that last semantic place that needed to
update these both atomically. This PR removes all the remaining
non-semantic places and changes the datastructure back to its indended
design. This is a necessary prerequisitve to be able to use more than
three ->kind bits, which will be required for export invalidation
(#57377), as well as some nicer error messages in failure cases.