Fix track delete: explicitly destroy TrackPoints and ShareLink first
Relying on DB-level ON DELETE CASCADE is unreliable for SQLite — the
pragma is connection-scoped and historical DBs may lack the constraint.
Delete children explicitly before destroying the track, matching the
pattern already used in the directory delete route.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>