test: add tests for ALLOC_SHARED, FREE_LANE, and lane exhaustion
Verifies frame-lanes.AC3.1, AC3.2, AC3.6, AC8.1, AC8.2:
- AC3.1: ALLOC_SHARED assigns next free lane from parent frame
- AC3.2: FREE_LANE clears lane data, keeps frame
- AC3.6: Lane exhaustion emits TokenRejected with 'no free lanes'
- AC8.1: Two act_ids sharing a frame have independent matching
- AC8.2: ALLOC_SHARED with exhausted lanes fails with TokenRejected
New test file: tests/test_pe_lanes.py with 13 test methods covering:
- ALLOC_SHARED basic and multiple lanes
- Invalid parent handling
- Lane exhaustion per-frame and across frames
- FREE_LANE returning lane to pool
- Independent matching at same offset
- Independent matching at different offsets