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.