Bugfix: OcclusionGroup - handle sleeper edge cases
- when player disconnects, clean itself up from non-local occlusion groups
- when sleeper moves, unsubscribe from occlusion groups go out of range or don't have a local player
Tests: unit tests, all pass (yay)