Fix a oversight in 5bf9e67b .

About 8 months after making this commit, I realised that I forgot to change a tclORELSE into a tclOR (which was the whole point of the commit to begin with). Shame on me.

It does not seem to have much of an effect on efficiency, though. It may be a hair faster, but mostly indistinguishably so.
Revert "Using IStream coiterator to explicit the captured state of tactic matching results."

Next commit try another strategy to make bind efficient in TacticMatching.

This reverts commit 3d52830b4876dadb985115a2ffeff6c0b77ca33d.
Emulates the writer monad in TactichMatching with a state-passing style monad.

I'm not sure exactly why this is, but it makes Ltac's match significantly faster (though there are still realistic examples which are much slower than they should).
Make the state monad in TacticMatching a CPS monad.

It avoids too many manipulation of IStream, resulting in further non-trivial efficiency improvement for Ltac's pattern-matching.