I'm going back and forth on allowing dupes on `self`.

This seems well defined:

```python
# Dupes on just self's index.
In [21]: df = pd.DataFrame({'A': [1, 1, 0, 0], 'B': [2, np.nan, 4, 4]}, index=['a','a','c','d'])

In [22]: df
Out[22]: 
   A   B
a  1   2
a  1 NaN
c  0   4
d  0   4

In [26]: other = pd.Series([1, 0, -1, -1], index=['a','b','c','d'])

In [27]: df.isin(other)  # Just the 1 matches. df.ix['a'] is True for both a's.
Out[27]: 
       A      B
a   True  False
a   True  False
c  False  False
d  False  False
```
What wouldn't be well defined if `other`'s index was instead `['a', 'a', 'c', 'd']`. Then `a` would be getting True from `other`'s first `a` and False from the second. But this case will already raise a ValueError since values has dupes.