Parse/validate ISBNs in Zig

Add hyphenation using the ISBN Agency range data master

Add ISBN.hyphenate, which writes the canonically hyphenated form of an ISBN (prefix, registration group, registrant, publication, check digit) using the International ISBN Agency's registration group and registrant ranges, and ISBN.format for std.fmt {f} integration, falling back to bare digits for ISBNs outside the assigned ranges. The range data is embedded as src/ranges.zig, generated by tools/generate_ranges.zig, which fetches the agency's range message over HTTPS with std.http.Client (or reads a previously downloaded copy) and verifies the group prefixes are prefix-free, which the lookup relies on. Regenerate with zig build update-ranges, which runs the generator on the build host and copies the result into the source tree via UpdateSourceFiles. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016uAPiLrcvxP4hyvSLokRrp