Improved the parsing of `-XExtension` flags.

The `Read LanguageExt` instance is now used to convert strings into
`LanguageExt`s, and passing -XNonexistentExtension results in an error
instead of attempting to load the file "-XNonexistentExtension".

I couldn't think of a better way to handle this than calling haskell's `error` function without making sweeping changes in many places, but if `error` is undesirable, I would be happy to consider or devise alternatives.