Exercise 5.1: Implemented a function to convert a Stream to a List.

Caution: This implementation will stack overflow for large lists since I used
natural recursion (foldRight).
Exercise 5.2: Implemented a function take for returning the first n elements of a Stream.
Exercise 5.3: Implemented takeWhile.

Write the function takeWhile for returning all starting elements of a Stream
that match the given predicate.