Use 64-bit integers to represent discriminants

This is in preparation for making discriminants not always be int (#1647), but it also makes compiles for a 64-bit target not behave differently with respect to how many bits of discriminants are preserved depending on the build host's word size, which is a nice property to have.

We may want to standardize how to abbreviate "discriminant" in a followup change.