Raise exception Bad_option for unparseable or invalid options.

Fix for issue #56.
It's not fine at all to catch `Invalid_argument` from `String.get`, `-unsafe` doesn't have anything to do with *type safety*, it only turns off array and string bound checking, for example if you have proved your bounds to be correct. It's still an opportunity you'd like to give yourself (e.g. if you want to make a head to head comparison with a C program you should compile with `-unsafe`: compare things that are comparable...)