'DataFrame' objects are mutable, thus they cannot be hashed when using grouper as columns in pivot_table
According to the [documentation](http://pandas.pydata.org/pandas-docs/stable/generated/pandas.pivot_table.html)  of the `pivot_table` command, the `columns` attribute could be a grouper object ("columns : a column, Grouper, array which has the same length as data, or list of them")

However when I try to do so, I get an error. 

```
x = pd.DataFrame({'key1': [1,1,2,2]*2, 'key2': ['a','a','a','b']*2, 'values': [1,2,3,4]*2, 'index': [1,1,1,1,2,2,2,2]})

x.pivot_table(columns=x.groupby(['key1','key2']), values='values', index='index')
```

see Error below.

Moreover, when I have a dataset of 10,000 rows with 800 unique combination of keys, the pivot_table doesn't return.

```
Traceback (most recent call last):
  File "C:\Users\hanans\AppData\Local\Continuum\Anaconda3\lib\site-packages\pandas\core\groupby.py", line 700, in mean
    return self._cython_agg_general('mean')
  File "C:\Users\hanans\AppData\Local\Continuum\Anaconda3\lib\site-packages\pandas\core\groupby.py", line 2560, in _cython_agg_general
    new_items, new_blocks = self._cython_agg_blocks(how, numeric_only=numeric_only)
  File "C:\Users\hanans\AppData\Local\Continuum\Anaconda3\lib\site-packages\pandas\core\groupby.py", line 2598, in _cython_agg_blocks
    result, _ = self.grouper.aggregate(values, how, axis=agg_axis)
  File "C:\Users\hanans\AppData\Local\Continuum\Anaconda3\lib\site-packages\pandas\core\groupby.py", line 1497, in aggregate
    out_shape = (self.ngroups,) + values.shape[1:]
  File "pandas\src\properties.pyx", line 34, in pandas.lib.cache_readonly.__get__ (pandas\lib.c:41917)
  File "C:\Users\hanans\AppData\Local\Continuum\Anaconda3\lib\site-packages\pandas\core\groupby.py", line 1384, in ngroups
    return len(self.result_index)
  File "pandas\src\properties.pyx", line 34, in pandas.lib.cache_readonly.__get__ (pandas\lib.c:41917)
  File "C:\Users\hanans\AppData\Local\Continuum\Anaconda3\lib\site-packages\pandas\core\groupby.py", line 1398, in result_index
    return MultiIndex(levels=[ping.group_index for ping in self.groupings],
  File "C:\Users\hanans\AppData\Local\Continuum\Anaconda3\lib\site-packages\pandas\core\groupby.py", line 1398, in <listcomp>
    return MultiIndex(levels=[ping.group_index for ping in self.groupings],
  File "C:\Users\hanans\AppData\Local\Continuum\Anaconda3\lib\site-packages\pandas\core\groupby.py", line 2029, in group_index
    self._make_labels()
  File "C:\Users\hanans\AppData\Local\Continuum\Anaconda3\lib\site-packages\pandas\core\groupby.py", line 2034, in _make_labels
    labels, uniques = algos.factorize(self.grouper, sort=self.sort)
  File "C:\Users\hanans\AppData\Local\Continuum\Anaconda3\lib\site-packages\pandas\core\algorithms.py", line 135, in factorize
    labels = table.get_labels(vals, uniques, 0, na_sentinel)
  File "pandas\hashtable.pyx", line 815, in pandas.hashtable.PyObjectHashTable.get_labels (pandas\hashtable.c:14073)
  File "C:\Users\hanans\AppData\Local\Continuum\Anaconda3\lib\site-packages\pandas\core\generic.py", line 663, in __hash__
    ' hashed'.format(self.__class__.__name__))
TypeError: 'DataFrame' objects are mutable, thus they cannot be hashed

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\hanans\AppData\Local\Continuum\Anaconda3\lib\site-packages\IPython\core\interactiveshell.py", line 3035, in run_code
    exec(code_obj, self.user_global_ns, self.user_ns)
  File "<ipython-input-18-6e9f5e8775c2>", line 1, in <module>
    x.pivot_table(columns=x.groupby(['key1','key2']), values='values', index='index')
  File "C:\Users\hanans\AppData\Local\Continuum\Anaconda3\lib\site-packages\pandas\tools\pivot.py", line 111, in pivot_table
    agged = grouped.agg(aggfunc)
  File "C:\Users\hanans\AppData\Local\Continuum\Anaconda3\lib\site-packages\pandas\core\groupby.py", line 685, in agg
    return self.aggregate(func, *args, **kwargs)
  File "C:\Users\hanans\AppData\Local\Continuum\Anaconda3\lib\site-packages\pandas\core\groupby.py", line 2637, in aggregate
    return getattr(self, arg)(*args, **kwargs)
  File "C:\Users\hanans\AppData\Local\Continuum\Anaconda3\lib\site-packages\pandas\core\groupby.py", line 706, in mean
    return self._python_agg_general(f)
  File "C:\Users\hanans\AppData\Local\Continuum\Anaconda3\lib\site-packages\pandas\core\groupby.py", line 1121, in _python_agg_general
    return self._python_apply_general(f)
  File "C:\Users\hanans\AppData\Local\Continuum\Anaconda3\lib\site-packages\pandas\core\groupby.py", line 675, in _python_apply_general
    self.axis)
  File "C:\Users\hanans\AppData\Local\Continuum\Anaconda3\lib\site-packages\pandas\core\groupby.py", line 1270, in apply
    splitter = self._get_splitter(data, axis=axis)
  File "C:\Users\hanans\AppData\Local\Continuum\Anaconda3\lib\site-packages\pandas\core\groupby.py", line 1256, in _get_splitter
    comp_ids, _, ngroups = self.group_info
  File "pandas\src\properties.pyx", line 34, in pandas.lib.cache_readonly.__get__ (pandas\lib.c:41917)
  File "C:\Users\hanans\AppData\Local\Continuum\Anaconda3\lib\site-packages\pandas\core\groupby.py", line 1365, in group_info
    comp_ids, obs_group_ids = self._get_compressed_labels()
  File "C:\Users\hanans\AppData\Local\Continuum\Anaconda3\lib\site-packages\pandas\core\groupby.py", line 1373, in _get_compressed_labels
    all_labels = [ping.labels for ping in self.groupings]
  File "C:\Users\hanans\AppData\Local\Continuum\Anaconda3\lib\site-packages\pandas\core\groupby.py", line 1373, in <listcomp>
    all_labels = [ping.labels for ping in self.groupings]
  File "C:\Users\hanans\AppData\Local\Continuum\Anaconda3\lib\site-packages\pandas\core\groupby.py", line 2023, in labels
    self._make_labels()
  File "C:\Users\hanans\AppData\Local\Continuum\Anaconda3\lib\site-packages\pandas\core\groupby.py", line 2034, in _make_labels
    labels, uniques = algos.factorize(self.grouper, sort=self.sort)
  File "C:\Users\hanans\AppData\Local\Continuum\Anaconda3\lib\site-packages\pandas\core\algorithms.py", line 135, in factorize
    labels = table.get_labels(vals, uniques, 0, na_sentinel)
  File "pandas\hashtable.pyx", line 815, in pandas.hashtable.PyObjectHashTable.get_labels (pandas\hashtable.c:14073)
  File "C:\Users\hanans\AppData\Local\Continuum\Anaconda3\lib\site-packages\pandas\core\generic.py", line 663, in __hash__
    ' hashed'.format(self.__class__.__name__))
TypeError: 'DataFrame' objects are mutable, thus they cannot be hashed
```
