Exception: "Function does not reduce" for pivot_table when aggfunc=lambda x: x
I have been using a "hack" for sometime that has broken in 0.18.0.  I have a use case where the aggfunc should return an object (so that I can iterate over the DataFrame and grab properties of the object).  I am not interested in a singe numerical value.  I might be abusing Pandas a bit here but I have seen others use the same hack.

This code worked prior to 1.18.0:
`df.pivot_table('Object', index=['Index1', 'Index2'], columns=['Col1'], aggfunc=lambda x: x)`

This now raises the "Function does not reduce":

```
File "<path>/views.py" in get_context_data
  290.             pt = df.pivot_table('Object', index=['Index1', 'Index2'], columns=['Col1'], aggfunc=lambda x: x)
File "<path>/lib/python2.7/site-packages/pandas/tools/pivot.py" in pivot_table
  121.     agged = grouped.agg(aggfunc)
File "<path>/lib/python2.7/site-packages/pandas/core/groupby.py" in aggregate
  3586.         return super(DataFrameGroupBy, self).aggregate(arg, *args, **kwargs)
File "<path>/lib/python2.7/site-packages/pandas/core/groupby.py" in aggregate
  3111.                 return self._python_agg_general(arg, *args, **kwargs)
File "<path>/lib/python2.7/site-packages/pandas/core/groupby.py" in _python_agg_general
  764.                 result, counts = self.grouper.agg_series(obj, f)
File "<path>/lib/python2.7/site-packages/pandas/core/groupby.py" in agg_series
  1863.             return self._aggregate_series_pure_python(obj, func)
File "<path>/lib/python2.7/site-packages/pandas/core/groupby.py" in _aggregate_series_pure_python
  1896.                     raise ValueError('Function does not reduce')
```

The root of the issue is obfuscated a bit by the exception handling. The actual issue is that BaseGrouper has no _is_builtin_func method which is called here:
https://github.com/pydata/pandas/blob/master/pandas/core/groupby.py#L1865

Typically self is an object which gets it's _is_builtin_func method from SelectionMixin however when aggfunc=lambda x: x self is a BaseGrouper which only inherits from object and does not provide _is_builtin_func.

I have monkey patched _is_builtin_func method (just returns the func passed in) onto BaseGrouper as a temporary fix.  Not sure the best way to fix this.  Two naive ways of fixing this would be:
1) add  `_is_builtin_func(self, func): return func` to BaseGrouper
2) check `hasattr(self, '_is_builtin_func')` before calling it, if not just use func that was passed in.

These both smell - I am sure there is a better solution.
#### output of `pd.show_versions()`
## INSTALLED VERSIONS

commit: None
python: 2.7.10.final.0
python-bits: 64
OS: Darwin
OS-release: 15.4.0
machine: x86_64
processor: i386
byteorder: little
LC_ALL: None
LANG: en_US.UTF-8

pandas: 0.18.0
nose: None
pip: 8.1.1
setuptools: 20.2.2
Cython: None
numpy: 1.11.0
scipy: None
statsmodels: None
xarray: None
IPython: 4.1.2
sphinx: None
patsy: None
dateutil: 2.5.2
pytz: 2016.3
blosc: None
bottleneck: None
tables: None
numexpr: None
matplotlib: None
openpyxl: 2.3.4
xlrd: 0.9.4
xlwt: None
xlsxwriter: 0.8.4
lxml: 3.6.0
bs4: 4.4.1
html5lib: 0.9999999
httplib2: None
apiclient: None
sqlalchemy: None
pymysql: None
psycopg2: None
jinja2: 2.8
boto: 2.39.0
