ENH: DataFrame.from_product to generate DataFrame from a Cartesian product
It would be nice to have a function like DataFrame.from_product with a interface similar to MultiIndex.from_product. For example, the following code:
```python
df = pd.DataFrame.from_product([np.linspace(1, 5, 2), np.linspace(1, 10, 3)], columns=['a', 'b'])
```

constructs the table:
```
     a    b
0  1.0  0.0
1  1.0  4.0
2  1.0  8.0
3  5.0  0.0
4  5.0  4.0
5  5.0  8.0
```

Currently to generate such table one can use:
```python
df = pd.DataFrame(list(itertools.product(np.linspace(1, 5, 2), np.linspace(0, 8, 3))), columns=['a', 'b'])
```
or rather hackish:
```python
df = pd.MultiIndex.from_product([np.linspace(1, 5, 2), np.linspace(1, 10, 3)], names=['a', 'b']).to_frame()
df.reset_index(drop=True, inplace=True)
```

Both are inefficient as they constructs a temporary to hold the Cartesian product before it is copied into the DataFrame.


