* fix: handle string DRIVE property in pack_io without crashing
The XDC parser stores all set_property values as string Properties,
but pack_io.cc called as_int64() on DRIVE which asserts !is_string.
Rather than converting numeric values to integer Properties in the
XDC parser (which risks breaking properties like LOC that downstream
code reads via to_string()/as_string()), fix the consumption site
in pack_io.cc to convert string values to integers when needed.
* refactor: use int_or_default for DRIVE property parsing
Replace manual is_string/as_int64 branching with int_or_default(),
which already handles both Property types with proper error reporting.