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  # no symmetry
    0     True
    1    False
    2     True
    dtype: bool
    >>> a & b == a.astype(bool) & b.astype(bool)
    0     True
    1    False
    2    False
    dtype: bool