Fix range violation for cartesianProduct of empty ranges.

Completes the fix for: https://issues.dlang.org/show_bug.cgi?id=10693
You guys are totally right. As long as one of the arguments is empty, the entire product by definition is empty. I don't know what I was thinking when I wrote that code... must've been past my bed time and I wasn't thinking straight. :P Anyway, I redid the fix, should be better now.