Fix range violation for cartesianProduct of empty ranges.

Completes the fix for: https://issues.dlang.org/show_bug.cgi?id=10693
Agreed. Otherwise you will also have a non-empty `Range.init` which feels rather error-prone to me.