BUG: boolean op with empty frames should not raise
```
In [4]: DataFrame(index=[1]) & DataFrame(index=[1])
TypeError: ufunc 'bitwise_and' not supported for the input types, and the inputs could not be safely coerced to any supported types according to the casting rule ''safe''
```

should just return an empty frame (also raises if one side is non-empty)
