Boolean negation gives wrong output when dtype is not boolean
When a Series or DataFrame has boolean elements, but the dtype is not bool, the elementwise negation operator (~) performs bitwise complement instead of negation. I got bit by this surprising behavior and it took awhile to track down and understand:

```
In [1]: import pandas as pd

In [2]: s = pd.Series([None,True])

In [3]: s.iloc[0] = False

In [4]: s
Out[4]: 
0    False
1     True
dtype: object

In [5]: ~s
Out[5]: 
0    -1
1    -2
dtype: object
```

whereas one would normally expect this sort of behavior:

```
In [6]: t = pd.Series([False,True])

In [7]: t
Out[7]: 
0    False
1     True
dtype: bool

In [8]: ~t
Out[8]: 
0     True
1    False
dtype: bool
```

Here's my version information:

```
% ipython
Python 2.7.9 |Anaconda 2.2.0 (x86_64)| (default, Dec 15 2014, 10:37:34) 
Type "copyright", "credits" or "license" for more information.

IPython 3.0.0 -- An enhanced Interactive Python.

In [12]: pd.show_versions()

INSTALLED VERSIONS
------------------
commit: None
python: 2.7.9.final.0
python-bits: 64
OS: Darwin
OS-release: 14.1.0
machine: x86_64
processor: i386
byteorder: little
LC_ALL: None
LANG: en_US.UTF-8

pandas: 0.15.2
nose: 1.3.4
Cython: 0.22
numpy: 1.9.2
```
