BUG: pivot_table fails with aggfunc='size' and margins=True
#### Code Sample: Calculating a simple cross table

```python
import pandas as pd

# prepare DataFrame
df = pd.DataFrame({
    'nr': [1,2,3,4,5,6,7,8], 
    'nr2': [1,2,3,4,5,6,7,8], 
    'cl':list('aabbcccc')
})
df['cl_cat'] = df.cl.astype('category')
```
This works:
```python
df.pivot_table(index='nr', columns='nr2', aggfunc='size', fill_value=0, margins=False)
```
```
nr2	1	2	3	4	5	6	7	8
nr								
1	1	0	0	0	0	0	0	0
2	0	1	0	0	0	0	0	0
3	0	0	1	0	0	0	0	0
4	0	0	0	1	0	0	0	0
5	0	0	0	0	1	0	0	0
6	0	0	0	0	0	1	0	0
7	0	0	0	0	0	0	1	0
8	0	0	0	0	0	0	0	1
```

This (`margins=True`) crashes with **KeyError: (1, 'All')** and **ValueError: Names should be list-like for a MultiIndex**:
```python
df.pivot_table(index='nr', columns='nr2', aggfunc='size', fill_value=0, margins=True)
```
```
---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\indexes\base.py in get_loc(self, key, method, tolerance)
   2889             try:
-> 2890                 return self._engine.get_loc(key)
   2891             except KeyError:

pandas\_libs\index.pyx in pandas._libs.index.IndexEngine.get_loc()

pandas\_libs\index.pyx in pandas._libs.index.IndexEngine.get_loc()

pandas\_libs\index_class_helper.pxi in pandas._libs.index.Int64Engine._check_type()

KeyError: (1, 'All')

During handling of the above exception, another exception occurred:

KeyError                                  Traceback (most recent call last)
C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\internals\managers.py in set(self, item, value)
   1067         try:
-> 1068             loc = self.items.get_loc(item)
   1069         except KeyError:

C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\indexes\base.py in get_loc(self, key, method, tolerance)
   2891             except KeyError:
-> 2892                 return self._engine.get_loc(self._maybe_cast_indexer(key))
   2893         indexer = self.get_indexer([key], method=method, tolerance=tolerance)

pandas\_libs\index.pyx in pandas._libs.index.IndexEngine.get_loc()

pandas\_libs\index.pyx in pandas._libs.index.IndexEngine.get_loc()

pandas\_libs\index_class_helper.pxi in pandas._libs.index.Int64Engine._check_type()

KeyError: (1, 'All')

During handling of the above exception, another exception occurred:

ValueError                                Traceback (most recent call last)
<ipython-input-85-ddda268badda> in <module>
----> 1 df.pivot_table(index='nr', columns='nr2', aggfunc='size', fill_value=0, margins=True)

C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\frame.py in pivot_table(self, values, index, columns, aggfunc, fill_value, margins, dropna, margins_name, observed)
   6065             dropna=dropna,
   6066             margins_name=margins_name,
-> 6067             observed=observed,
   6068         )
   6069 

C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\reshape\pivot.py in pivot_table(data, values, index, columns, aggfunc, fill_value, margins, dropna, margins_name, observed)
    160             observed=dropna,
    161             margins_name=margins_name,
--> 162             fill_value=fill_value,
    163         )
    164 

C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\reshape\pivot.py in _add_margins(table, data, values, rows, cols, aggfunc, observed, margins_name, fill_value)
    229             observed,
    230             grand_margin,
--> 231             margins_name,
    232         )
    233         if not isinstance(marginal_result_set, tuple):

C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\reshape\pivot.py in _generate_marginal_results(table, data, values, rows, cols, aggfunc, observed, grand_margin, margins_name)
    312                 piece = piece.copy()
    313                 try:
--> 314                     piece[all_key] = margin[key]
    315                 except TypeError:
    316 

C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\frame.py in __setitem__(self, key, value)
   3465         else:
   3466             # set column
-> 3467             self._set_item(key, value)
   3468 
   3469     def _setitem_slice(self, key, value):

C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\frame.py in _set_item(self, key, value)
   3543         self._ensure_valid_index(value)
   3544         value = self._sanitize_column(key, value)
-> 3545         NDFrame._set_item(self, key, value)
   3546 
   3547         # check if we are modifying a copy

C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\generic.py in _set_item(self, key, value)
   3380 
   3381     def _set_item(self, key, value):
-> 3382         self._data.set(key, value)
   3383         self._clear_item_cache()
   3384 

C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\internals\managers.py in set(self, item, value)
   1069         except KeyError:
   1070             # This item wasn't present, just insert at end
-> 1071             self.insert(len(self.items), item, value)
   1072             return
   1073 

C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\internals\managers.py in insert(self, loc, item, value, allow_duplicates)
   1176 
   1177         # insert to the axis; this could possibly raise a TypeError
-> 1178         new_axis = self.items.insert(loc, item)
   1179 
   1180         block = make_block(values=value, ndim=self.ndim, placement=slice(loc, loc + 1))

C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\indexes\numeric.py in insert(self, loc, item)
    144         if is_scalar(item) and isna(item):
    145             item = self._na_value
--> 146         return super().insert(loc, item)
    147 
    148     def _union(self, other, sort):

C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\indexes\base.py in insert(self, loc, item)
   5302         """
   5303         _self = np.asarray(self)
-> 5304         item = self._coerce_scalar_to_index(item)._ndarray_values
   5305         idx = np.concatenate((_self[:loc], item, _self[loc:]))
   5306         return self._shallow_copy_with_infer(idx)

C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\indexes\base.py in _coerce_scalar_to_index(self, item)
   4148             dtype = None
   4149 
-> 4150         return Index([item], dtype=dtype, **self._get_attributes_dict())
   4151 
   4152     def _to_safe_for_reshape(self):

C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\indexes\base.py in __new__(cls, data, dtype, copy, name, fastpath, tupleize_cols, **kwargs)
    531 
    532                     return MultiIndex.from_tuples(
--> 533                         data, names=name or kwargs.get("names")
    534                     )
    535             # other iterable of some kind

C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\indexes\multi.py in from_tuples(cls, tuples, sortorder, names)
    487             arrays = zip(*tuples)
    488 
--> 489         return MultiIndex.from_arrays(arrays, sortorder=sortorder, names=names)
    490 
    491     @classmethod

C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\indexes\multi.py in from_arrays(cls, arrays, sortorder, names)
    427             sortorder=sortorder,
    428             names=names,
--> 429             verify_integrity=False,
    430         )
    431 

C:\ProgramData\Anaconda3\lib\site-packages\pandas\util\_decorators.py in wrapper(*args, **kwargs)
    206                 else:
    207                     kwargs[new_arg_name] = new_arg_value
--> 208             return func(*args, **kwargs)
    209 
    210         return wrapper

C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\indexes\multi.py in __new__(cls, levels, codes, sortorder, names, dtype, copy, name, verify_integrity, _set_identity)
    262         if names is not None:
    263             # handles name validation
--> 264             result._set_names(names)
    265 
    266         if sortorder is not None:

C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\indexes\multi.py in _set_names(self, names, level, validate)
   1207         # Don't allow a single string for names in a MultiIndex
   1208         if names is not None and not is_list_like(names):
-> 1209             raise ValueError("Names should be list-like for a MultiIndex")
   1210         names = list(names)
   1211 

ValueError: Names should be list-like for a MultiIndex
```

These (index variable string/categorical) both crash the same way:
```python
df.pivot_table(index='cl', columns='nr2', aggfunc='size', fill_value=0, margins=True)
df.pivot_table(index='cl_cat', columns='nr2', aggfunc='size', fill_value=0, margins=True)
```

This (`aggfunc='sum'`) works, but does a different thing:
```python
df.pivot_table(index='nr', columns='nr2', aggfunc='sum', fill_value=0, margins=True)
```
#### Problem description

Margin sums cannot be calculated with pivot_table if `aggfunc='size'` is set (to calculate crosstables).

#### Expected Output

Margin sums like those resulting from 
```python
pd.crosstab(index=df.nr, columns=df.nr2, margins=True)
```
```
nr2	1	2	3	4	5	6	7	8	All
nr									
1	1	0	0	0	0	0	0	0	1
2	0	1	0	0	0	0	0	0	1
3	0	0	1	0	0	0	0	0	1
4	0	0	0	1	0	0	0	0	1
5	0	0	0	0	1	0	0	0	1
6	0	0	0	0	0	1	0	0	1
7	0	0	0	0	0	0	1	0	1
8	0	0	0	0	0	0	0	1	1
All	1	1	1	1	1	1	1	1	8
```
#### Output of ``pd.show_versions()``

<details>

INSTALLED VERSIONS
------------------
commit           : None
python           : 3.7.3.final.0
python-bits      : 64
OS               : Windows
OS-release       : 10
machine          : AMD64
processor        : Intel64 Family 6 Model 158 Stepping 10, GenuineIntel
byteorder        : little
LC_ALL           : None
LANG             : None
LOCALE           : None.None

pandas           : 0.25.0
numpy            : 1.16.4
pytz             : 2019.1
dateutil         : 2.8.0
pip              : 19.1.1
setuptools       : 41.0.1
Cython           : 0.29.12
pytest           : 5.0.1
hypothesis       : None
sphinx           : 2.1.2
blosc            : None
feather          : None
xlsxwriter       : 1.1.8
lxml.etree       : 4.3.4
html5lib         : 1.0.1
pymysql          : None
psycopg2         : None
jinja2           : 2.10.1
IPython          : 7.7.0
pandas_datareader: None
bs4              : 4.7.1
bottleneck       : 1.2.1
fastparquet      : None
gcsfs            : None
lxml.etree       : 4.3.4
matplotlib       : 3.1.1
numexpr          : 2.6.9
odfpy            : None
openpyxl         : 2.6.2
pandas_gbq       : None
pyarrow          : 0.11.1
pytables         : None
s3fs             : None
scipy            : 1.3.0
sqlalchemy       : 1.3.5
tables           : 3.5.2
xarray           : None
xlrd             : 1.2.0
xlwt             : 1.3.0
xlsxwriter       : 1.1.8
</details>
