Model test: make sure decoded data is as expected (not only offset).

Previously we tracked only byte positions in the model, and compared
with the decoders' offset (via bytesRead).
Now we give the whole input to the evaluator, and thanks to that we track
offset we can easily also compare that the decoded data is what we expect.
Compile QC tests with -O2.
Implement lookAheadM.

Also with tests.
Cleanup instance Arbitrary of lazy bytestrings.
Model test: provide better shrinking.

The model now has a constructor Actions which holds a list of Action.
It can be used to unpack a LookAhead(M) or Try in order to shrink the program.