Completed and cleaned up the Gen combinators.

Also, added the IStreamBuilder interface for generically
creating stream instances.
Played around with collection interface IStream and ISequence.

Trying to find a balance between operations defined in concrete
collection classes in generic interfaces and generic extension
methods. The rule of thumb has been that, if an operation is
inefficient in some collection class when defined generically,
then there should be a specific implementation that is optimized
for that collection type. The operation then becomes part of the
ISequence interface that contains the most popular list transformation
functions.
Added couple of things forgotten from previous commit.
Added Take and TakeWhile to IStream interface.