Tentative implementation of the `next` function

As outlined in https://github.com/elixir-lang/elixir/issues/2262#issuecomment-43190083

This PR will conflict with https://github.com/elixir-lang/elixir/pull/2289!

This also probably obsoletes https://github.com/elixir-lang/elixir/pull/2286 (except for the strict behaviour I haven't implemented for `next` yet).