Feature request: add na_action argument to applymap
#### Code Sample, a copy-pastable example if possible

Desired method:

```python
x = pd.DataFrame(...)
x = x.applymap(foo, na_action='ignore')
```

Current method:

```python
x = pd.DataFrame(...)
x = x.apply(lambda y: y.map(foo, na_action='ignore'))
```

#### Problem description

The `na_action='ignore'` argument is extremely useful when processing messy data, and it would be nice to have on the `DataFrame.applymap` method as well.

`DataFrame.applymap` already uses very similar code, so ideally this shouldn't be too dramatic of a change.

[`DataFrame.applymap`](https://github.com/pandas-dev/pandas/blob/v0.23.4/pandas/core/frame.py#L6067-L6072)
[`Series.map` (1)](https://github.com/pandas-dev/pandas/blob/v0.23.4/pandas/core/series.py#L2997-L3000), [`Series.map` (2)](https://github.com/pandas-dev/pandas/blob/v0.23.4/pandas/core/base.py#L994-L1004)

For that matter, is there any reason why `DataFrame.applymap` shouldn't just be a wrapper for `.apply(lambda x: Series.map)`? Seems like it would be beneficial for deduplicating logic in the codebase anyway.