BUG: Check for duplicate names columns and index in crosstab
- [x] closes #22529
- [x] tests added / passed
- [x] passes `black pandas`
- [x] passes `git diff upstream/master -u -- "*.py" | flake8 --diff`
- [ ] whatsnew entry

**Problem:** Currently if you give two Series with the same name to pd.crosstab it will ignore one of the columns. By minimally modifying a current test, it no longer passes.

**Replicable example of the issue (more examples in the tests of this PR):**
```
import pandas as pd
s1 = pd.Series(range(3), name='foo')
s2 = s1 + 1

expected = pd.crosstab(s1, s2.rename("bar")) # If we rename one of the series we get the correct result
result = pd.crosstab(s1, s2)

pd.testing.assert_frame_equal(result, expected)
```

**Proposed solution (implemented in this PR):**

- ~~Raise an exception if the user tries to use duplicate column names, duplicated index, or a name is shared between the index and columns~~.

Updated (implemented) proposal:
      - Find which names are duplicated and add a number to them
      - If a name is shared between rows and columns, add a "_row" and "_col" to them.

**Alternative solutions:**

- Append a number without checking to each name.
   - Pro: Simpler code (don't have to look for duplicates nor know how many times a name is duplicated).
   - Con: Might be confusing for the user to see an error in column "column_name_3", specially if their names already had numbers in them.

