Identifier: Preserve invalid 32-bit values.
When we initialize an Identifier from a 32-bit value, make sure to preserve invalid values. We were just shifting left by 32 bits, which means that the invalid 0xffffffff becomes 0xffffffff00000000, for which is_valid() returns true. This was causing us not to detect some invalid identifiers after they were saved and reloaded.