Add guards to the Stream module (#9069)
Add guards to the Stream module (#9069)

Before we hadn't added guards to functions in the Stream module
because the error message for invoking a function with the wrong
number of arguments was better than the FunctionClauseError. Now
that FunctionClauseErrors are better and display the failed
clauses and everything, having guards in Stream functions means
that we can fail fast in many cases instead of waiting to fail
until the stream is realized.
kimshrier/elixir,kimshrier/elixir,joshprice/elixir,michalmuskala/elixir,pedrosnk/elixir,ggcampinho/elixir,elixir-lang/elixir,lexmag/elixir,pedrosnk/elixir,kelvinst/elixir,ggcampinho/elixir,kelvinst/elixir,lexmag/elixir