API: membership checks on ExtensionArray containing NA values
Membership checks on ExtensionArrays containing `NA` values raises ValueError in some circumstances (but not in other):

```python
>>> arr1 = pd.array(["a", pd.NA])
>>> arr2 = pd.array([pd.NA, "a"])
>>> "a" in arr1
True  # ok
>>> "a" in arr2
TypeError: boolean value of NA is ambiguous  # not ok
>>> pd.NA in arr1
TypeError: boolean value of NA is ambiguous  # not ok
>>> pd.NA in arr2
True  # ok
```

So overall quite random failures. This PR fixes this problem by adding a custom `__contains__` method on `ExtensionArray`.

I assume that we want `pd.NA in arr1` to keep returning True. Note however that `np.nan in np.array([np.nan])` return False, so pandas' behaviour is different.