ENH: Improve error reporting for wrong merge cols
- [x] closes #16228
- [x] tests added / passed
- [x] passes `black pandas`
- [x] passes `git diff upstream/master -u -- "*.py" | flake8 --diff`
- [x] whatsnew entry

Fixed error reporting when double conditions are given. Additionally I found, that something like 
```
left = DataFrame({"a": [1, 2], "b": [3, 4]})
right = DataFrame({"a": [1, 1], "c": [5, 6]})
pd.merge(left, right, right_on="a")
```

raised an uncontrolled error:

```
Traceback (most recent call last):
  File "/home/developer/.config/JetBrains/PyCharm2020.2/scratches/scratch_4.py", line 25, in <module>
    print(pd.merge(left, right, right_on="a"))
  File "/home/developer/PycharmProjects/pandas/pandas/core/reshape/merge.py", line 72, in merge
    op = _MergeOperation(
  File "/home/developer/PycharmProjects/pandas/pandas/core/reshape/merge.py", line 643, in __init__
    self._validate_specification()
  File "/home/developer/PycharmProjects/pandas/pandas/core/reshape/merge.py", line 1247, in _validate_specification
    if len(self.right_on) != len(self.left_on):
TypeError: object of type 'NoneType' has no len()
```


Unfortunately I don't have an idea how to simplify this significantly right now, but will try to look into this into the future. thanks @phofl very nice, this has been an open issue for a while!

yeah happy to take refactoring PRs (but not sure this is that easy), but i am sure there are parts that can be cleaned.