BUG: Don't raise for NDFrame.mask with nullable boolean
- [x] closes https://github.com/pandas-dev/pandas/issues/35429
- [x] closes https://github.com/pandas-dev/pandas/issues/36395
- [x] tests added / passed
- [x] passes `black pandas`
- [x] passes `git diff upstream/master -u -- "*.py" | flake8 --diff`
- [x] whatsnew entry

~(Need to wait until the v1.1.3 whatsnew gets merged before adding a release note.)~

This is taking the approach of treating NA as False within NDFrame.mask and NDFrame.where when dealing with a nullable boolean mask.
> (Need to wait until the v1.1.3 whatsnew gets merged before adding a release note.)

ok to target 1.1.2 if ready before tagged > ok to target 1.1.2 if ready before tagged

I can add a v1.1.2 note just in case @simonjayhawkins I think having a GitHub Action for merge conflicts like you mentioned would be super useful, do you know by chance how that could be set up? i've added the 1.1.3 milestone back while the change note is still in 1.1.3.rst seems like this is a workaround because BooleanArray doesn't have a `__inv__`.  would defining that solve this issue? this is a good point @jbrockmendel  > seems like this is a workaround because BooleanArray doesn't have a `__inv__`. would defining that solve this issue?

Do you mean the issue with - vs ~? I might be misunderstanding but inverting a BooleanArray seems to work okay:

```python
[ins] In [3]: arr
Out[3]: 
<BooleanArray>
[True, False, <NA>]
Length: 3, dtype: boolean

[ins] In [4]: ~arr
Out[4]: 
<BooleanArray>
[False, True, <NA>]
Length: 3, dtype: boolean
```

This PR mostly became complicated because of the existing logic surrounding inplace inside _where, and when the inversion should happen in the presence of missing values.  > this is an intricate change and not appropriate for 1.1.2

As this PR evolves, can we review the milestone when this PR is ready but before this is merged.


 Closing for now since it seems it isn't clear if / how we want to do this