small change in CCOrd
cleaner system to specify hash/eq/cmp for operations in CCLinq;
use Map to implement most binary operations, including join