* Implement batch callback system for scene cache incremental updates.
This change adds a batch callback mechanism to track changes in component
managers and the entity manager, avoiding full cache rebuilds in the
future scene cache implementation.
1. SingleInstanceComponentManager:
- Added SingleInstanceComponentManagerBase to handle callbacks without
template bloat.
- Implemented batch delivery using Slice<const Entity> and a fixed-size
array of 16 for dirty entities to avoid heap allocations.
- Added compile-time option for sorted insertion (default to linear).
2. Manager Integration:
- RenderableManager: Added notifications to setters.
- LightManager: Added notifications to setters
- TransformManager: Handled transactions by deferring notifications
until commit, and supported hierarchical updates in children.
3. EntityManager:
- Added a new batching callback API for entity destruction.
- Used std::function for callbacks to allow thread-safe copying of the
callback list outside the lock.
- Simple accumulation in loop and flush when full, no bypass.
4. Tests:
- Added formal unit tests for all managers and entity manager callbacks.