Exercise 5.9: Added Stream.fibs from answers.
Exercise 5.{10,11}: Implemented the corecursive function unfold.

Furthermore implemented fibs, from, constant and ones in terms of unfold.

We can write a more general stream building function. It takes an initial state,
and a function for producing both the next state and the next value in the
generated stream.

Option is used to indicate when the Stream should be terminated, if at all. The
function unfold is the most general Stream-building function. Notice how closely
it mirrors the structure of the Stream data type. unfold and the functions we
can implement with it are examples of what is sometimes called a corecursive
function. While a recursive function consumes data and eventually terminates, a
corecursive function produces data and coterminates. We say that such a function
is productive, which just means that we can always evaluate more of the result
in a finite amount of time (for unfold, we just need to run the function f one
more time to generate the next element). Corecursion is also sometimes called
guarded recursion.