Strict evaluation of exceptions. ...

Turns out, hiding an exception inside the thunk for a value is not the
same as throwing an exception while trying to generate the thunk for a
value. In the first case, an exception will only be thrown if the
thunk is actually evaluated. In the second case the exception will
always be thrown.

The thunk hiding thing is useful sometimes, but it violates the
semantics of `sequence`, which we are trying to reproduce.
patch version
Merge pull request #2 from taphu/strict

Strict evaluation of exceptions.