ENH: Implement cross method for Merge Operations
- [x] closes #5401
- [x] tests added / passed
- [x] passes `black pandas`
- [x] passes `git diff upstream/master -u -- "*.py" | flake8 --diff`
- [x] whatsnew entry

This is a first draft of a ``cross`` method for merge operations. As suggested by @jreback I added a new column and dispatched to ``inner`` as a first naive implementation. I am currently wondering, if there would be a better place to adjust the arguments than the places I selected. I wanted to avoid to modify ``self`` in some method called within the constructor, so i modified the inputs before adding the parameters to ``self``. This currently does not support the ``cross`` method for join. If we get a consensus where to put the modifications, I would add support for ``join``. Also have to add more tests probably and something to the userguide


Have to look into the performance afterwards. Copies of the Left and Right frames may be a big performance hit for bigger frames?
Thx for the feedback, will start to implement the changes in the evening probably Hello @phofl! Thanks for updating this PR. We checked the lines you've touched for [PEP 8](https://www.python.org/dev/peps/pep-0008) issues, and found:











There are currently no PEP 8 issues detected in this Pull Request. Cheers! :beers: 

##### Comment last updated at 2020-11-25 22:31:42 UTC Sorry for the confusion. I did not get what you meant with *assert is* for the unmodified input frames, if you meant a regular assert_frame_equal my I was just confused. Thanks for the clarification I added a few tests covering mixed dtypes, nulls, more columns and different lengths @jreback greenish. Failure unrelated Good point, deleted the column before. Now we are raising a ``MergeError`` ok i think your version before the last commit is good. ping on green. thanks @phofl very nice! Great job, and thanks for implementing this! I've given your solution the advertisement it deserves on [stack](https://stackoverflow.com/a/65017552/4909087). 

Excited to see this in 1.2. @phofl created an issue for benchmarks 

it might make sense to change to use a broadcasting impl (like refs on SO) or use pandas cartesian product function - if the benchmarks show this - can create an issue or better to do benchmarks first @jreback If you are referring to asvs, I have added two benchmarks through this pr oh right u did! ok Will try to look into the numpy or cartesian function when I've got a bit more time uninterrupted