Return `ParserHelp` from `parseFailure`

This makes it possible to customise the final help text without duplicating the
help generation code.
Add traversal for help text in ParserResult

It should now be relatively easy to customise the appearance of the generated
help text.

For example, in #54, @amigalemming asks for a way to get rid of the usage line
when a specific error message is displayed.  This is now easy to achieve:

    exec :: ParserPrefs -> ParserInfo a -> IO a
    exec pprefs pinfo = do
      res <- execParserPure pprefs pinfo <$> getArgs
      let f h | isEmpty (helpError h) = h
              | otherwise = h { helpUsage = mempty }
      handleParseResult (overFailure f res)