Raise exception Bad_option for unparseable or invalid options.

Fix for issue #56.
Need to expose this in `options.mli` as well so that the exception can be caught.
It might also be worth putting a catch in for `Failure` (which is what the `Cstruct.BE` functions raise on a bounds overflow) and turning that into a `Bad_option` as well, so that the caller has an easier time of catching just the one error.