BUG: hist raises TypeError when df contains non numeric column

`DataFrame.hist` without `by` keyword raises `TypeError` when it contains non-numeric column.

```
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import pandas.util.testing as tm

n=100
gender = tm.choice(['Male', 'Female'], size=n)
classroom = tm.choice(['A', 'B', 'C'], size=n)
single = tm.choice(['S'], size=n)

df = pd.DataFrame({'gender': gender,
                   'classroom': classroom,
                   'height': np.random.normal(66, 4, size=n),
                   'weight': np.random.normal(161, 32, size=n),
                   'category': np.random.randint(4, size=n)})

df.hist(by='gender')
# This works, even though 'classroom' (str) column in still contained

df.hist()
# TypeError: cannot concatenate 'str' and 'float' objects
```