first() and rest()

Patch is based on #2, that should be merged first.

I was not sure if a makeRewindable() call was necessary. Is it?