Partial revert "Using IStream coiterator to explicit the captured state of tactic matching results."

The modifications introduced by this commit are internalised without sacrificing modularity.

This reverts partially commit 3d52830b4876dadb985115a2ffeff6c0b77ca33d.
Using a colagebraic encoding of streams in TacticMatching (proposal #1).

The advantage is that the "internal state" of the stream is manipulated explicitely, instead of being implicit in lazy data-type constructors. It avoids a lot of intermediate allocations while preserving the monadic abstraction.

This very simple implementation is already a little faster than trunk.

This is a GADT implementation. I'll fix it to use equivalent (but way more verbose) first-class modules later.
Slight efficiency improvement of the concat_map operation in TacticMatching's stream.
Further minor improvement of concat_map.
Serious typo in [MiniStream.map_filter].

Looping recursion made the theories loop (witnessed for instance in Lists/Streams.v).