BUG: Fix issue with apply on empty DataFrame
Fixes a bug where the return value for certain functions was hard-coded as `np.nan` when operating on an empty `DataFrame`.

Before
```python
>>> import numpy as np
>>> import pandas as pd
>>> df = pd.DataFrame(columns=["a", "b", "c"])
>>> df.apply(np.sum)
a   NaN
b   NaN
c   NaN
dtype: float64
>>> df.apply(np.prod)
a   NaN
b   NaN
c   NaN
dtype: float64
```

After
```python
>>> import numpy as np
>>> import pandas as pd
>>> df = pd.DataFrame(columns=["a", "b", "c"])
>>> df.apply(np.sum)
a    0.0
b    0.0
c    0.0
dtype: float64
>>> df.apply(np.prod)
a    1.0
b    1.0
c    1.0
dtype: float64
```

**Edit**: Closes #28202 and closes #21959 after https://github.com/pandas-dev/pandas/pull/28213/commits/cb68153f4b6fca19440ec6b79a0d1128c002ec11.  The issue was that the arguments of `self.f` were already unpacked here:
https://github.com/pandas-dev/pandas/blob/cb68153f4b6fca19440ec6b79a0d1128c002ec11/pandas/core/apply.py#L112
and then we tried to do this again inside `apply_empty_result` which was raising an error and causing the unusual output.
Hello @dsaxton! Thanks for updating this PR. We checked the lines you've touched for [PEP 8](https://www.python.org/dev/peps/pep-0008) issues, and found:





There are currently no PEP 8 issues detected in this Pull Request. Cheers! :beers: 

##### Comment last updated at 2019-09-12 13:19:32 UTC needs a test > needs a test

@jbrockmendel Added a few tests that appear to be failing on master.  There are some existing tests failing on this branch that I still need to work through. > Also closes #28202

Does this close any other issues?

Can you add a release note in 1.0.0.rst? > > Also closes #28202
> 
> Does this close any other issues?
> 
> Can you add a release note in 1.0.0.rst?

I believe it also closes #21959, which was still an issue at least as of 0.25.1 (not sure about master) > Was the discussion on passing through args & kwargs resolved?

If I turn off the `try` / `catching` completely to try to surface any other issues, then adding back the argument unpacking only causes `test_nunique_empty` to fail among the tests in `test_apply.py` (three failed tests instead of the two mentioned above), so I would say we shouldn't be passing them. Sounds good. I think we're good to merge then? > Sounds good. I think we're good to merge then?

I'd say so unless @jreback can foresee any other potential problems OK. Let's give it a few more days in case. lgtm but need to edit the top of the PR to add closes on the other issue number  > lgtm but need to edit the top of the PR to add closes on the other issue number

Done, thanks for the review! Thanks @dsaxton 