Implement logical operators on DataFrame, &, |, ^, ~
code example from ML

```
from pandas import *
df1 = {'a': {'a': True, 'b': False, 'c': False, 'd': True, 'e': True},
 'b': {'a': False, 'b': True, 'c': False, 'd': False, 'e': False},
 'c': {'a': False, 'b': False, 'c': True, 'd': False, 'e': False},
 'd': {'a': True, 'b': False, 'c': False, 'd': True, 'e': True},
 'e': {'a': True, 'b': False, 'c': False, 'd': True, 'e': True}}

df2 = {'a': {'a': True, 'b': False, 'c': True, 'd': False, 'e': False},
 'b': {'a': False, 'b': True, 'c': False, 'd': False, 'e': False},
 'c': {'a': True, 'b': False, 'c': True, 'd': False, 'e': False},
 'd': {'a': False, 'b': False, 'c': False, 'd': True, 'e': False},
 'e': {'a': False, 'b': False, 'c': False, 'd': False, 'e': True}}

df1 = DataFrame(df1)
df2 = DataFrame(df2)

df3 = (df1 and df2)
```
