Bump version to 0.6.0.
Use custom monad for option readers.

Readers need to be polymorphic in the monad, as they are used for both
options and arguments, so they use `fail` for parse errors.

However, the `Monad` instance for `Either` doesn't define `fail`, so the
parser used to throw a runtime exception in case of reader errors.

This is now fixed by using a custom monad ReadM which defines `fail`
correctly.
Add context to parse errors (fixes #40).

Print option name and string which failed to parse together with the
error message.
Update CHANGELOG.