Export `parserFailure` (fixes #57)

This should make it easier to define custom variants of `execParser`.  For
example, here is a function to print the help text of a parser:

    showHelpText :: ParserPrefs -> ParserInfo a -> IO ()
    showHelpText pprefs pinfo = handleParseResult . Failure $
      parserFailure pprefs pinfo ShowHelpText mempty

and here is the function requested by #57:

    execParserPure' :: ParserPrefs -> ParserInfo a -> [String] -> ParserResult a
    execParserPure' pprefs pinfo [] = Failure $
      parserFailure pprefs pinfo ShowHelpText mempty
    execParserPure' pprefs pinfo args = execParserPure pprefs pinfo args
Deprecate some of the *execParser* functions

The plan is to keep the parser execution API as lean as possible.  Once the
deprecated definitions are removed, it will be down to essentially three
functions:

- `execParser`: for quick and dirty usage of the library
- `customExecParser`: for general use
- `execParserPure`: when maximum control or customisation is needed

All the other convenience functions can be obtained easily using
`execParserPure` and other utilities like `handleParseResult` and
`getParseResult`.
Add instances for `ParserResult`
Remove pragmas for unused extensions

Replace GADTs with existentially quantified types.