Stops entity observer code from generating chunks during snapshot lock
- This can generate chunks during finalize
- When a thread calls generate, it grabs the generate lock
- However, async threads grab the snapshot lock and then the generate lock
- This is almost a standard deadlock example
-- Finalize task: holds snapshot lock and grabs generation lock
-- Async thread: grabs generation lock and then attempts to grab the snapshot lock

This also changes the region generator pools to have an unbounded queue