API: GH4633, bool(obj) behavior, raise on __nonzero__ always

closes #4633

this is a revert to #1073/#1069

now a call to ``__nonzero__`` raises ``ValueError`` ALWAYS

The following is the behavior

```
In [17]: s = Series(randn(4))

In [18]: df = DataFrame(randn(10,2))

In [19]: s_empty = Series()

In [20]: df_empty = DataFrame()

In [5]: bool(s)
Out[5]: ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

In [6]: bool(s_empty)
Out[6]:  ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

In [7]: bool(df)
Out[7]:  ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

In [8]: bool(df_empty)
Out[8]:  ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
```

And prevents these fun ones (same for Series/Panel)
```
In [4]: df1 = DataFrame(np.ones((4,4)))

In [5]: df2 = DataFrame(np.zeros((4,4)))

In [6]: df1 and df2
 ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

In [7]: df1 or df2
 ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

In [8]: not df1
 ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

In [9]: def f():
   ...:     if df1:
   ...:         print("this is cool")
   ...:         

In [10]: f()
 ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()


```