Rename each_slice to slice and make block optional to produce array.

It was a bad idea to implement each_slice as the only way to get slices
from an array. The renamed function works as before when given an
optional lambda. When called without a lambda it produces the collected
result of all slices. Thus making it possible to iterate over it.

The alternative was not equip all other iteration methods with slicing
functionality, or to implement a separate slicing function.