Improve RSE.

Avoid an error when we try to do RSE on two joins with the same join input
collections.
Tweak TupleStruct hash algorithm.

Make it hash values compatible with Array#hash.
Fixes for TupleStruct.

Adjust TupleStruct#hash and #eql? so that we can use TupleStructs and Arrays
interchangably in more places. In particular, we can now add TupleStructs to a
Set and have the Set compare as equal to a Set that contains the same values
represented as Arrays.
Merge branch 'master' into gc-proto-v1
Cleanup after merge.