API: Default handling of nans in sum and add methods is inconsistent
```python
test_frame = pd.DataFrame({
    'a': [1, 2, 3],
    'b': [1, 2, float('nan')],
})
```

When we use the `.sum(axis=1)` method to add these up, nans are excluded or treated as zeros:

```
> test_frame.sum(axis=1)
2.0
4.0
3.0
```

However, if we use `.add()` (or equivalently `+`), nans are propagated:
```
> test_frame.a.add(test_frame.b)
> test_frame.a + test_frame.b
2.0
4.0
NaN
```

I don't see a clear reason why these two methods should have different nan policys and the principle of least surprise suggests they should perform identically. 

For what it's worth, I think a default policy of propagating nans would be best since the result is more likely to draw attention to the problem and evoke a reasoned response from the user, rather than assuming a solution on the user's behalf. 
