First pass at a stream implementation.

PspStream[A] mirrors scala.Stream in some ways:

 * head is eager
 * head and tail can throw exceptions
 * #:: and #::: methods added via implicits

And differs in some ways:

 * No "non-terminating" methods like length or filter
 * Memoization is off by default (but can be turned on)
 * Prefers fold() to pattern matching
 * Stores thunks not by-name params
 * Fewer allocations (in theory at least)

(I don't expect you to necessarily pull this as-is, but
maybe it's a good starting point? Interested in feedback.)