ENH: specify function to determine NaN when using fillna()
#### Is your feature request related to a problem?

When using `pd.fillna(df)` it does not fill all of the values that `pd.isna(df)` returns as `True`. Furthermore you might have some `NaN` values you want to fill, and some you don't

#### Describe the solution you'd like
include a `nan_function` to be parsed to `fillna()`. The `nan_function` should take a value (or row, or Series) as input and return True/False. Based on that `fillna` determines which values to replace.

```python

#examples
df = df.fillna(nan_function = pd.isnull, values = np.nan) #What pd.isnull returns as True is set to np.nan
df = df.fillna(nan_function = lambda x: x<0, values = np.nan) #Makes all negative numbers np.nan
df = df.fillna(nan_function = np.nan, values = 0) #Only fills np.nan with zeroes
```