Support arbitrary number of lambda arguments

Section 4.1.4 of R7RS states that a lambda with an argument list that
is improper will receive all remaining argument values in a new list
assigned to the last symbol.

Add a type called PairJoiner that makes building lists easy.

tests pass

Fixes #11