BUG: Allow assignment by indexing with duplicate column names
closes #12344

 in which assignment to columns in `DataFrame` with duplicate column names caused all columns with the same name to be reassigned.  The bug was located <a href="https://github.com/pydata/pandas/blob/master/pandas/core/indexing.py#L545">here</a>.

When you try to index into the DataFrame using `.iloc`, `pandas` will find the corresponding column name (or key) first before setting that key with the given value.  Unfortunately, since all of your columns have the same key name, `pandas` ends up choosing all of the columns corresponding to that name.

This PR introduces a `_set_item_by_index` method for `DataFrame` objects that allows you to bypass that issue by using the indices of the columns to set the columns themselves whenever there are duplicates involved.
