BUG: Allow Series with same name with crosstab (#13279)
 - [x] closes #13279
 - [x] tests added / passed
 - [x] passes ``git diff upstream/master --name-only -- '*.py' | flake8 --diff``
 - [x] whatsnew entry

Before, passing two `Series` with the same name in `crosstab` raised a `KeyError` because of a block in `pivot_table` that tried to unstack a `MultiIndex` with duplicate names. 
# [Codecov](https://codecov.io/gh/pandas-dev/pandas/pull/16028?src=pr&el=h1) Report
> Merging [#16028](https://codecov.io/gh/pandas-dev/pandas/pull/16028?src=pr&el=desc) into [master](https://codecov.io/gh/pandas-dev/pandas/commit/c6e5bf6bfdaad8945120bd54600b3eac79de26b2?src=pr&el=desc) will **decrease** coverage by `0.04%`.
> The diff coverage is `100%`.

[![Impacted file tree graph](https://codecov.io/gh/pandas-dev/pandas/pull/16028/graphs/tree.svg?width=650&height=150&src=pr&token=eZ4WkYLtcO)](https://codecov.io/gh/pandas-dev/pandas/pull/16028?src=pr&el=tree)

```diff
@@            Coverage Diff             @@
##           master   #16028      +/-   ##
==========================================
- Coverage   91.05%   91.01%   -0.05%     
==========================================
  Files         161      161              
  Lines       49397    49405       +8     
==========================================
- Hits        44978    44965      -13     
- Misses       4419     4440      +21
```

| Flag | Coverage Δ | |
|---|---|---|
| #multiple | `88.78% <100%> (-0.03%)` | :arrow_down: |
| #single | `40.27% <0%> (-0.07%)` | :arrow_down: |

| [Impacted Files](https://codecov.io/gh/pandas-dev/pandas/pull/16028?src=pr&el=tree) | Coverage Δ | |
|---|---|---|
| [pandas/core/reshape/pivot.py](https://codecov.io/gh/pandas-dev/pandas/pull/16028?src=pr&el=tree#diff-cGFuZGFzL2NvcmUvcmVzaGFwZS9waXZvdC5weQ==) | `95.3% <100%> (+0.09%)` | :arrow_up: |
| [pandas/io/gbq.py](https://codecov.io/gh/pandas-dev/pandas/pull/16028?src=pr&el=tree#diff-cGFuZGFzL2lvL2dicS5weQ==) | `25% <0%> (-58.34%)` | :arrow_down: |
| [pandas/plotting/\_converter.py](https://codecov.io/gh/pandas-dev/pandas/pull/16028?src=pr&el=tree#diff-cGFuZGFzL3Bsb3R0aW5nL19jb252ZXJ0ZXIucHk=) | `63.23% <0%> (-1.82%)` | :arrow_down: |
| [pandas/core/frame.py](https://codecov.io/gh/pandas-dev/pandas/pull/16028?src=pr&el=tree#diff-cGFuZGFzL2NvcmUvZnJhbWUucHk=) | `97.66% <0%> (-0.1%)` | :arrow_down: |
| [pandas/core/algorithms.py](https://codecov.io/gh/pandas-dev/pandas/pull/16028?src=pr&el=tree#diff-cGFuZGFzL2NvcmUvYWxnb3JpdGhtcy5weQ==) | `94.15% <0%> (+0.01%)` | :arrow_up: |

------

[Continue to review full report at Codecov](https://codecov.io/gh/pandas-dev/pandas/pull/16028?src=pr&el=continue).
> **Legend** - [Click here to learn more](https://docs.codecov.io/docs/codecov-delta)
> `Δ = absolute <relative> (impact)`, `ø = not affected`, `? = missing data`
> Powered by [Codecov](https://codecov.io/gh/pandas-dev/pandas/pull/16028?src=pr&el=footer). Last update [c6e5bf6...45daa14](https://codecov.io/gh/pandas-dev/pandas/pull/16028?src=pr&el=lastupdated). Read the [comment docs](https://docs.codecov.io/docs/pull-request-comments).
 got lost, sorry. can you rebase / update. and move whatsnew to 0.21.0. Rebased and moved the whatsnew to 0.21.0. Apologies, I couldn't find a quick way to make the check more elegant yet. 

From our discussions before, you're correct that a cleaner solution would involve possibly including a private argument in `unstack()` to differentiate between positional and label indexers, but that solution would be more involved since it would touch a lot more of the codebase.  I couldn't find an exact, existing issue related to using integers with `unstack()` and a `MultiIndex`. #14969 is somewhat related but deals with `loc`. Should I make a new issue? > I couldn't find an exact, existing issue related to using integers with unstack() and a MultiIndex.

Go right ahead, though cross-reference #14969 just in case. @mroeschke : If you could reference your new issue in a comment for this patch and address my nit, I'll be happy to merge this afterwards. Thanks @mroeschke !