these aren't strict version numbers

package NAME VERSION uses strict version number parsing, so we should
too.
version number parsing

we have to pre-scan for a version number rather than just feeding the
next token to version->parse directly because version.pm doesn't provide
any way to get error messages from strict version parsing -
version->parse is only for lax parsing, and version::is_strict doesn't
report errors.

we should look into potentially pushing peek_version back into the core,
because prescan_version is pretty useless as it stands (it requires that
if the string has anything following the version number, it must be
whitespace followed by either ; or {, which works for the core but not
for us.