cu-transform 0.12.0

A coordinate frame transformation library for copper-rs, similar to tf2 in ROS2
Documentation
# Future Enhancements for cu_transform

## Discrete Time of Validity (Tov) Support

Currently, the `Tov` enum in `cu29_clock` supports:
- `None`: No specific time of validity
- `Time(CuTime)`: A single point in time
- `Range(CuTimeRange)`: A continuous time range

### Proposed Enhancement: Discrete Variant

Add a new variant to support discrete timestamps:
```rust
pub enum Tov {
    None,
    Time(CuTime),
    Range(CuTimeRange),
    Discrete(ArrayVec<CuTime, 8>), // Or similar fixed-size array
}
```

### Use Cases

1. **Irregular Transform Sampling**: When transforms are captured at non-uniform intervals
2. **Multi-Frame Synchronization**: When a transform is only valid at specific synchronized timestamps across multiple sensors
3. **Sparse Transform Data**: When transforms are only defined at specific keyframes

### Implementation Considerations

1. **Core Change Required**: This requires modifying the `cu29_clock` crate
2. **Lookup Semantics**: Need to define behavior for transform lookups:
   - Exact match only?
   - Nearest neighbor?
   - Interpolation between discrete points?
3. **Memory Efficiency**: Use fixed-size arrays to maintain stack allocation
4. **Backward Compatibility**: Ensure existing code continues to work

### Current Workaround

For now, users needing discrete timestamp support can:
1. Use multiple `CuMsg<TransformMsg>` with individual `Tov::Time` values
2. Implement custom timestamp tracking in their application logic