Value-number `ByrefExposed` memory and loads
Teach value numbering to keep track of the current value number for
`ByrefExposed` memory, updating it appropriately at relevant stores.
Introduce a new VN operator `ByrefExposedLoad`, used for loads of
address-exposed locals and loads by indirs that don't have more specific
value numbers, which is a function of the current `ByrefExposed` memory VN
and the pointer VN. This allows loop hoisting and CSE to recognize
redundant loads via byrefs when there are no intervening stores.
Fixes #7903.