should error when groupby.agg(set) is unhashable 
#### Code Sample, a copy-pastable example if possible

```python
x = pd.DataFrame({'x': ['a', 'b', ], 'y' : [set(), {1, 2}]})
display(x)
x.groupby('x').agg(set)
```
![image](https://user-images.githubusercontent.com/8660111/52145939-5c47b600-2630-11e9-9761-4fe591ca0314.png)


#### Problem description
`groupby().agg(set)` returns unexpected output when values are unhashable. 

#### Expected Output

This function works when the types are hashable. 

```python 
x = pd.DataFrame({'x': ['a', 'b', 'a', 'b'], 'y' : [1, (1, 2), 4, 5]})
display(x)
x.groupby('x').agg(set)
```
![image](https://user-images.githubusercontent.com/8660111/52145854-31f5f880-2630-11e9-8925-3938f44296fa.png)

It looks like in some cases, when there is a set being aggregated the values become the column names. I think it would be more helpful to error, when this sort of thing happens. 

`TypeError: unhashable type: 'set'`

#### Output of ``pd.show_versions()``
commit: None
python: 3.7.0.final.0
python-bits: 64
OS: Linux
OS-release: 4.4.0-1070-aws
machine: x86_64
processor: x86_64
byteorder: little
LC_ALL: None
LANG: en_US.UTF-8
LOCALE: en_US.UTF-8

pandas: 0.23.4
pytest: None
pip: 18.1
setuptools: 40.5.0
Cython: None
numpy: 1.15.4
scipy: None
pyarrow: None
xarray: None
IPython: 7.1.1
sphinx: None
patsy: None
dateutil: 2.7.5
pytz: 2018.7
blosc: None
bottleneck: None
tables: None
numexpr: None
feather: None
matplotlib: 3.0.2
openpyxl: None
xlrd: None
xlwt: None
xlsxwriter: None
lxml: None
bs4: 4.6.3
html5lib: None
sqlalchemy: None
pymysql: None
psycopg2: None
jinja2: 2.10
s3fs: None
fastparquet: None
pandas_gbq: None
pandas_datareader: None
<details>



</details>
