validate() parsed every value to bounds-check it, then the typed getters
re-parsed the same string at read time (with a comment admitting the
failure was unreachable). A single parseValue() now validates and converts,
finalize() runs it once per option after layering, and the getters just
read the stored typed value.
- appendList: one home for the List newline-join rule (was duplicated
across accumulate and set)
- fold the redundant Int64 getter into Int; drop the truthy helper for
the shared boolWord vocabulary
- add Opt.Metavar so help derives the value placeholder from data
instead of branching on the option name (seed-time)
No behavior change; --help output is byte-identical.