Fix #573: Tuple methods skipping sequential tail

For withLeading(), simply pass the existing rest to the constructor. For
append() and withTrailing(), use the previous version if the rest is
empty, or else construct a new tuple with rest.append() /
rest.withTrailing() respectively.
Add tests for #573: Tuples with sequential tails

Stongly compressed / inlined versions of

https://gist.github.com/lucaswerkmeister/8994c60cf5c0f4641b72/a56e521dcd93a48f5d4154babb6bc70c05f77626
Merge pull request #574 from lucaswerkmeister/fix573

Fix #573: Tuple methods skipping sequential tail