CartesianProduct() added to mapset API.

I suddenly realized that we do not have a `CartesianProduct()` in our API. So here it is. I Also tried to add some test cases regarding the basic properties of the Empty set.