Change String.next_grapheme/1 and String.next_codepoint/1 to return nil on string end

This is more composable in the sense can use in in if/cond constructs
and also makes it easy to build streams. Closes #1721.
Deprecate Enum.first/1 in favor of Enum.at/2 and List.first/1

The main reason for this change is because `Enum.first/1` does
not communicate that enumeration will happen, in contrast to
functions like Enum.at/2 and Enum.fetch/2 which are meant to
be used with non-indexed collections and the need for enumeration
is made a bit more obvious.

Closes #1983
Update CHANGELOG