ENH: Issue a Warning when renaming an Index object creates duplicates.
#### Is your feature request related to a problem?

I'm working with code written by other people, where a `df.rename(columns={...})` was causing a Exception later in the program that was really hard to debug.

#### Describe the solution you'd like

My suggestion is that whenever you rename a column in a DataFrame where the new name is already in the column set, a warning be issued. That way it could be easy to avoid (or detect) that kind of problem. Maybe an optional argument with a default value could be added to `rename()`, such as `warn_duplicates=True`.

#### API breaking implications

If implemented the suggested way, nothing must be changed in existing code that uses pandas.

#### Describe alternatives you've considered

As I understand (I haven't checked the source code), the rename might be done by copying the index and for each element in it, apply the mapping.
If it in fact works that way, a solution would be to, for each item that will be mapped, check if the new value is already present in the output index.
Nevertheless, I believe a more efficient and compact way would be: at the end of the `rename()` function, check for duplicates.
For example, let `idx` be an Index object, the following piece of code can list the duplicates:

```python
dup = idx[idx.duplicated()]
```
if `dup` is not empty, it means the rename created duplicated items.

#### Additional context

Why this feature suggestion? Mainly because of the issue I was experimenting. If it is implemented, it will be more easily solved for people using the library in the future.
Here are two examples of when renaming is the origin of a problem:

```python
df = pd.DataFrame(dict(
    col0 = [1, 2, 3 ,4],
    col1 = [2, 3, 4, 5],
    col2 = [3, 4, 5, 6],
    col3 = [4, 5, 6, 7]))


# df with a duplicated index
df0 = df.rename(index={3: 1})
# df with a duplicated column
df1 = df.rename(columns={'col2': 'col0'})

# these are ok
print(pd.concat([df, df0], axis=0))
print(pd.concat([df, df1], axis=1))

# these are NOT ok
print(pd.concat([df, df0], axis=1))
print(pd.concat([df, df1], axis=0))
```

Although it may seem an improbable scenario, it might happen for other people, the same way it happened to me. This [post](https://stackoverflow.com/questions/61514861/pandas-pd-concat-results-in-duplicated-columns#comment108816263_61514937) happened me inspecting the source of the problem. Specially, [these comments](https://stackoverflow.com/questions/61514861/pandas-pd-concat-results-in-duplicated-columns#comment108816263_61514937), because they warned me that there must have been something wrong in the code, not in the dataset itself. In fact, there was.

I'd be glad to help implementing it, once this suggestion is approved!
