BUG: DataFrame.at implicitly assumes unique axes
Update: `DataFrame.lookup` is also affected

```
arr = np.random.randn(6).reshape(3, 2)
df = pd.DataFrame(arr, columns=["A", "A"])

>>> df.at[0, "A"]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "pandas/core/indexing.py", line 2069, in __getitem__
    return super().__getitem__(key)
  File "pandas/core/indexing.py", line 2034, in __getitem__
    return self.obj._get_value(*key, takeable=self._takeable)
  File "pandas/core/frame.py", line 2706, in _get_value
    series = self._get_item_cache(col)
  File "pandas/core/generic.py", line 3550, in _get_item_cache
    res = self._box_item_values(item, values)
  File "pandas/core/frame.py", line 2880, in _box_item_values
    return self._constructor(values.T, columns=items, index=self.index)
AttributeError: 'BlockManager' object has no attribute 'T'
```

Same problem for `df.at.__setitem__`.  `Series.at` looks OK.