Raise exception Bad_option for unparseable or invalid options.

Fix for issue #56.
I don't believe in using `unsafe` for this at all -- I prefer to explicitly use `String.unsafe_get` where appropriate (this could be easier now with GADTs supplying proof witnesses a little more easily than before).  Either way, it's immaterial to this patch, since we're stuck with `Invalid_argument` in the short term.