BUG: consistency between logical ops & type casts

Closes [#6528](https://github.com/pydata/pandas/issues/6528).
Currently series logical operations are bound to return a series with `dtype='bool'`. That being a good decision or not, it is good to have some internal consistency:

    >>> a = pd.Series([nan, nan, nan])
    >>> b = pd.Series([False, True, nan])
    >>> a | b == b | a  # not symmetric
    0     True
    1    False
    2     True
    dtype: bool
    >>> a & b == a.astype(bool) & b.astype(bool)  # not consistent w/ type casts
    0     True
    1    False
    2    False
    dtype: bool

With this patch, [all these tests pass.](https://github.com/pydata/pandas/pull/8151/files#diff-933180870dd152b775952fc54a99dba7R2371)
@jreback in python 

    >>> bool(np.nan)
    True

in pandas:

    >>> pd.Series([np.nan], dtype='bool')
    0    True
    dtype: bool

this test passes only if `np.nan` is casted to `False`.

same comment for the other test.