Issue #1042 - Cross-Product for lists of kernels

I haven't added a check on whether each sub-list contains kernels of the same type.
Let me know if you think it's necessary.