Implement some basic stream functions

Streams are memoized and evaluated lazily although in sml
srepeat + spairs (+shift)
Implement the rest of functions