refactor: deduplicate functions between platform modules and core
Move Statistics to Core:
- Add Doc.stats type and function (comprehensive GPX statistics)
- Add Doc.pp_stats for pretty-printing statistics using Format
- Remove duplicate stats implementations from Gpx_eio and Gpx_unix
Remove Function Duplication:
- Remove redundant accessor functions (waypoint_coords, track_coords, route_coords)
- Remove duplicate constructor functions (make_track_from_coords, make_route_from_coords)
- Remove duplicate count_points implementations
- Users should call core functions directly (Waypoint.to_floats, Track.to_coords, etc.)
Simplify Platform APIs:
- Platform modules now only contain I/O operations and print_stats
- Gpx_eio.print_stats and Gpx_unix.print_stats use Doc.pp_stats
- Removed unused Result binding operators
- Cleaner, more focused platform-specific functionality
This eliminates code duplication while keeping I/O operations
appropriately separated in platform-specific modules.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>