introduce Enum.reverse/3

Enum.reverse/3 reverses the given enum from the given starting and ending indices.

Example usage would be:
```
iex(1)> Enum.reverse('abcdef', 0, 2)
'cbadef'
iex(2)> Enum.reverse([1, 2, 3, 4, 5], 1, 2)
[1, 3, 2, 4, 5]
iex(3)> Enum.reverse(1..5, 1, 2)           
[1, 3, 2, 4, 5]
```
This could likely be `:lists.reverse(acc1, acc2 ++ :lists.reverse(acc3))` and we will likely get rid of an append operation. :)