Implement replicate and replicateM

This required changing implementation of applyM and moving ContVec definition
to Class module. Result of applyM should be wrapped in the constructor
inside the function otherwise it would create problems with escaping
skolem variables
Add fold/foldr/unfoldr based on the same approach
Implement foldr/foldl/unfolr using GADTs

Old Foldr and Unfoldr type classes are removed