Series.__contains__ gives unexpected results
`__contains__` should validate the key to be of a correctly castable type, e.g. 0.1 should raise a `TypeError` with an `Int64Index`

---

I may well be missing something, but the following behavior seems unexpected:

"""
In [58]: 5 in pd.Series([1.5, 2.5, 3.5])
Out[58]: False

In [59]: 5.0 in pd.Series([1.5, 2.5, 3.5])
Out[59]: False

In [60]: 0.1 in pd.Series([1.5, 2.5, 3.5])
Out[60]: True

In [61]: 0 in pd.Series([1.5, 2.5, 3.5])
Out[61]: True

In [62]: 3.5 in pd.Series([1.5, 2.5, 3.5])
Out[62]: False

In [63]: 3.4 in pd.Series([1.5, 2.5, 3.5])
Out[63]: False

In [64]: 0.2 in pd.Series([1.5, 2.5, 3.5])
Out[64]: True

In [65]: 1.6 in pd.Series([1.5, 2.5, 3.5])
Out[65]: True

In [66]: 2.6 in pd.Series([1.5, 2.5, 3.5])
Out[66]: True

In [67]: 3.0 in pd.Series([1.5, 2.5, 3.5])
Out[67]: False

In [68]: 2.5 in pd.Series([1.5, 2.5, 3.5])
Out[68]: True

In [69]: 0.1 in pd.Series([1.5, 2.5, 3.5])
Out[69]: True
"""
