ENH: pandas.Series.apply method to work with missing values.
It would be great if `pandas.Series.apply` had in-built handling of missing values. This could be achieved by simply adding a `na_action` parameter, exactly as `pandas.Series.map` to work in a similar way. In this respect NaN values could simply be ignored or an error raised if one was encountered. `pandas.Series.map` has basic missing value handling, but does NOT handle *args or **kwargs. The ideal world would be a modification to `apply` to provide both the missing value AND additional argument functionality. Alternatives could be a new function name that handles both cases, but I wouldn't recommend this due to redundancy.

I am aware of easy solutions to this practically, including NaN handling within the custom function, dropping NaN values prior to calling `apply`, but this is an ease-of-use feature that I believe can significantly improve usability.

See this use case standalone:

```python
import pandas as pd
from numpy import nan

string2 = "love"
x = pd.Series(['we','love',nan,'pandas','very','much'])

def some_string_processing_function(s, another_string):
    return s[1]==another_string[1]

# pd.Series.map doesn't work here because of keyword argument
x.apply(some_string_processing_function, another_string=string2)

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-116-95783a17b05f> in <module>
----> 1 x.apply(some_string_processing_function, another_string="love")

~\lib\site-packages\pandas\core\series.py in apply(self, func, convert_dtype, args, **kwds)
   4136             else:
   4137                 values = self.astype(object)._values
-> 4138                 mapped = lib.map_infer(values, f, convert=convert_dtype)
   4139 
   4140         if len(mapped) and isinstance(mapped[0], Series):

pandas\_libs\lib.pyx in pandas._libs.lib.map_infer()

~\lib\site-packages\pandas\core\series.py in f(x)
   4121 
   4122             def f(x):
-> 4123                 return func(x, *args, **kwds)
   4124 
   4125         else:

<ipython-input-115-4f94a2ec1809> in some_string_processing_function(s, another_string)
      1 def some_string_processing_function(s, another_string):
----> 2     return s[1]==another_string[1]

TypeError: 'float' object is not subscriptable
```

Thank you for your time.