Update: rewrite projectile batching to use StableObjectArray instead of StableObjectCache
- internal statics are now initialized and cleaned up on client connect/disconenct (+ scripts reload)
- had to sprinkle container access checks due to indirection
This was the last user of StableObjectCache, will rip it out next
Tests: ran unit tests, 2p craggy test with shooting (confirmed fly by effects, ricoches still happen)