Remove constexpr use in hash functions.
Fix NEG/NOT.

NOT: confusing because of the ~ (highlighter wanted to treat this as
a dtor and it's kind of unclear what's going on at first glance, so
I'm just wrapping it in parens).

NEG: Always casted to fp64, which is not the desired behavior now that
it's possible to have integral types.
Fix comments for bitwise ops.
Fix types for bitwise shifts.

Implicit casts to {u,}int32 are not good behavior, though they are past
behavior (and work). Now casted to {u,}int64 to avoid data loss for
64-bit integers.
Adjust rounding behavior.

For all rounding instructions, the result is always, necessarily, a
float. If the input is not a double, it's casted to a double and
returned.

Not yet sure if the casted result should also be rounded, since I
suspect there'll be precision issues for integers that exceed the
precision of a double.

Alternatively, the result of rounding an integer could also be an
undefined value, but that sounds weird. Maybe just cast to signed
integer instead?
Add exception for jumping to/calling invalid-typed instruction pointers.
Fix type of memory block IDs.

Should be si64, was si32. Was entirely possible to accidentally screw
up an ID by dropping the latter 32-bits (since the VM doesn't really
have to provide a block ID in a particular order or only in a
particular range).
Fix type of thread indices.

Should be 64-bit integers.

Not likely to ever encounter the limit here, but better safe than
sorry.