We read Live and write to OutputOff simultaneously in 3 places.
Separating them avoids data sharing and data races like D41884/PR35788.
This patch places Live and Hash together.
2 reasons this is appealing:
- Hash is immutable. Live is almost read-only - only written once in MarkLive.cpp where Hash is not accessed
- we already discard low bits of Hash to decide ShardID. It doesn't matter much if we discard another bit.
Because all the use sites of OutputOff expect uint64_t/size, change its
type from int64_t to uint64_t.