DataFrame.itertuples() incorrectly determines when plain tuples should be used
#### Code Sample, a copy-pastable example if possible

```python
>>> import pandas, sys
>>> sys.version
'3.6.7 (default, Oct 25 2018, 09:16:13) \n[GCC 5.4.0 20160609]'
>>> pandas.__version__
'0.25.1'
>>> df = pandas.DataFrame([{f"foo_{i}": f"bar_{i}" for i in range(255)}])
>>> df.itertuples(index=False)
...
SyntaxError: more than 255 arguments
```
The issue seems to have been caused/revealed by [this commit](https://github.com/pandas-dev/pandas/commit/81f5c0164e6cb26cc8fea00ebc22f4fe93771ff6#diff-1e79abbbdd150d4771b91ea60a4e1cc7R903) that removed the try-catch block around the namedtuple class creation.

FWIW, this issue is _not_ reproducible in version `0.24.2`, and is also not a problem in Python 3.7+, as the limit of the max number of arguments that can be passed to a function has been removed (AFAIK).

#### Problem description

The [condition](https://github.com/pandas-dev/pandas/blob/v0.25.1/pandas/core/frame.py#L970) in `itertuples()` method does not correctly determine when plain tuples should be used instead of named tuples.

This how the named tuple [class template](https://github.com/python/cpython/blob/3.6/Lib/collections/__init__.py#L301-L349) defines the `__new__()` method (in Python 3.6 at least):
```py
"""
...
def __new__(_cls, {arg_list}):
    ...
"""
```

If there are 255 column names given, the total number of arguments to `__new__()` will be 256, because of that extra `cls`, causing a syntax error.

