Cleaned up interface for CartesianProduct.  Added operator overlord for Array to return a CartesianProduct on multiplication.