Add decodeOrFail and decodeFileOrFail.

Issue #22. Documentation and tests still missing.
Rewrote decodeFile* to use chunk pushing style.
This code currently uses Data.ByteString.Lazy.Internal.defaultChunkSize
when reading from handles. I'd prefer to be more independent
of bytestring's internals, let's copy the code to this module.