Tuple.new takes an enumerable as initializer. Tuple[] takes varargs

As constructors have been added for Hash/Set/Vector, so they can be
usefully subclassed, the convention I have been working with is that
.new takes a collection which is uses as initializer. This matches the
way Ruby's Array.new, Hash.new, etc. work. At the same time, I have
been adding a .[] method which takes varargs, just like Ruby Array[]
and Hash[].

This commit updates Tuple so that Tuple.new follows the same
convention. A couple problems with the Tuple specs have been corrected.
Tuple also has .[] (inherited from Array), and specs for that have
been added.