ENH: bool sparse now supports logical op
- [x] tests added / passed
- [x] passes `git diff upstream/master | flake8 --diff`
- [x] whatsnew entry

implemented bool (logical and / or) op for bool `SparseArray`. Currently it raises if `sp_index` are different.

```
s1 = pd.SparseArray([True, True, True, True, True], dtype=np.bool, fill_value=False)
s2 = pd.SparseArray([False, True, False, True, True], dtype=np.bool, fill_value=False)
s1 & s2
# ValueError: operands could not be broadcast together with shapes (5,) (3,) 
```

## [Current coverage](https://codecov.io/gh/pydata/pandas/pull/14000?src=pr) is 85.28% (diff: 100%)

> Merging [#14000](https://codecov.io/gh/pydata/pandas/pull/14000?src=pr) into [master](https://codecov.io/gh/pydata/pandas/branch/master?src=pr) will increase coverage by **<.01%**

``` diff
@@             master     #14000   diff @@
==========================================
  Files           139        139          
  Lines         50214      50224    +10   
  Methods           0          0          
  Messages          0          0          
  Branches          0          0          
==========================================
+ Hits          42822      42832    +10   
  Misses         7392       7392          
  Partials          0          0          
```

> Powered by [Codecov](https://codecov.io?src=pr). Last update [a0d05db...6db3096](https://codecov.io/gh/pydata/pandas/compare/a0d05dbf7477df863486d82a0cdd4e3e93023864...6db309637fb81e168be98b2d0094cf6951ee8bc7?src=pr)
 thanks!
