Optimize esm exports by shifting the protocol burden to getters (#98932)
To support live bindings and cyclic references we bind esm exports as
getter properties. However this is ambiguous with binding raw values, so
we would always use `0` as a tag to flag that the next value was a
_value_ not a getter function.
In practice value exports account for 90% of exports and getters only
10% (from vercel-site). So this changes the protocol so the getter
functions require tags instead saving a small number of bytes in the
output.