More accurate return type for Iterable.indexed

(and, by extension, entries)

Old return type:

    {<Integer->Element&Object>*}

New return type:

    Iterable<<Integer->Element&Object>,Element&Null|Absent>

The old return type was always a possibly-empty Iterable; with the new
return type, the returned Iterable is nonempty iff Element is
non-optional and Absent is Nothing – in other words, if the Iterable
contains at least one element, which cannot be null. In this case, the
returned sequence can’t be empty (only null elements are removed), and
so the return type is correct.

Closes #444.
Implement Absent trick for zip*, unzip*, mapPairs

Fixes #340, closes #396 (dupe).
Update tests for #340 and #444
Merge branch 'absentTrick_340' of https://github.com/lucaswerkmeister/ceylon.language