Optimize Range.rest test for returning empty rest

If the Range has exactly one element, its rest is empty. Previously, the
check for this was 'size==1'. However, for big, non-Enumerable ranges
(i. e. there is no mapping from Elements to Integers), size is expensive
because it has to iterate through all the successors (or predecessors).
Instead, we now check if 'first==last', which is equivalent but faster.
Merge pull request #439 from lucaswerkmeister/optimRangeRest

Optimize Range.rest test for returning empty rest