fix trace ID, metric temporality, and memory leak
1. trace ID: generate new ID for each root span (when no active spans)
- add active_span_count tracking
- add newTrace() for explicit trace boundaries
2. metrics: change from cumulative to delta temporality
- each counter() call is an increment, not aggregated total
3. memory: track allocated NumberDataPoints and free on flush
- allocated_data_points list tracks allocations
- freed in flush() and deinit()
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>