added a cartesian product method to array... in the future, I should refactor this library to be not be a core extension, but instead static methods