Fix state manager lock isolation
Summary
Fixes #6829.
This changes backend state manager internals so each manager instance owns its own _state_manager_lock instead of sharing a lock created at class-definition time.
Updated managers:
StateManagerMemoryStateManagerDiskStateManagerRedis
Redis was included because it had the same dataclasses.field(default=asyncio.Lock()) pattern as memory and disk.
Root cause
asyncio.Lock() was evaluated when the dataclass field was defined, so every instance of the same manager class received the same lock object.
Using default_factory=asyncio.Lock creates a fresh lock per manager instance.
The PR also corrects an existing unit-test assertion whose comment already said separate state-manager instances should not share locks, but whose assertion checked the opposite.
Validation
uv run pytest tests/units/test_state.py::test_state_manager_modify_state tests/units/istate/manager/test_manager_locks.py -q
Result: 6 passed.
uv run pytest tests/units --cov --no-cov-on-fail --cov-report=
Result: 6955 passed, 18 skipped.
uv run towncrier check --config pyproject.toml --dir . --compare-with upstream/main
Result: found news/6830.bugfix.md.
uv run pre-commit run --files reflex/istate/manager/memory.py reflex/istate/manager/disk.py reflex/istate/manager/redis.py tests/units/istate/manager/test_manager_locks.py tests/units/test_state.py news/6830.bugfix.md
Result: passed.