Report error contexts.

### This obsoletes #71.

### details and motivation

the following code can be copied to tests and run in both this patch and before.  the comment at the end explains the difference: with this patch, the <?> contexts will be contained in the error message.

    module Main (main) where

    import Data.Attoparsec.ByteString.Char8

    main :: IO ()
    main = print $ parseOnly (many1 "*" <?> "stars") "#**!"

    -- 0.12.1.0 *" <?> "i(before #71):
    -- Left "Failed reading: takeWith"
    --
    -- 0.12.2.0 (#71):
    -- Left "stars: Failed reading: takeWith"