Reimplement Roman numeral detection

Roman numeral detection code used complicated process of check, parse,
build, compare to detect if a string was a valid Roman numeral.
Reimplemented as a single step, that only checks for the validity (and
well-formedness) of the string, without computing its value.

It uses the same modern Roman numeral notation, including subtractive
notation.