DOC: Add Inner Fill Option
#### Is your feature request related to a problem?

With fillna (https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.fillna.html), the options are only front fill or back fill. In some instances, though, you might want to do an "inner" fill--meaning only fill between the first valid value and the last valid value.

For example, let's consider the data frame below. Let's imagine a store that was closed on weekends (so they never took inventory) and only sold two products. Product A was limited release, so we want to differentiate between 0 inventory (implying that it would come back) and NaN inventory (meaning it isn't actually sold).

|Date|Product A|Product B|
| --- | --- | --- |
|8/30/2021|NaN|20|
|8/31/2021|NaN|18|
|9/01/2021|25|17|
|9/02/2021|20|14|
|9/03/2021|14|13|
|9/04/2021|NaN|NaN|
|9/05/2021|NaN|NaN|
|9/06/2021|9|11|
|9/07/2021|3|9|
|9/08/2021|NaN|5|
|9/09/2021| NaN|0|

Now, let's imagine we want to fill in prices for weekends, but, if we do front fill, it will fill in a 3 for 9/8/2021 and 9/9/2021, which does not make sense. If we do back fill, we would fill in values for 8/30 and 8/31, which also doesn't make sense.

Ideally, we'd be able to do something like a front/back fill, but select "inner_only=True", to get the resulting dataframe of:

|Date|Product A|Product B|
| --- | --- | --- |
|8/30/2021|NaN|20|
|8/31/2021|NaN|18|
|9/01/2021|25|17|
|9/02/2021|20|14|
|9/03/2021|14|13|
|9/04/2021|14|13|
|9/05/2021|14|13|
|9/06/2021|9|11|
|9/07/2021|3|9|
|9/08/2021|NaN|5|
|9/09/2021| NaN|0|

#### Describe the solution you'd like

New parameter: inner_only
Docstring: Will perform the requested fill operation, but only between the first and last valid elements in the column.

#### API breaking implications

No API breaking implementations

#### Describe alternatives you've considered

Have written some workarounds for this--essentially getting the iloc of the first and last elements, doing the fill operation on the results only in between those, then replacing back to the dataframe.

```python
def inner_fill_df(df, fill_method="ffill", cols=[]):
     if not cols or not len(cols):
          cols = list(df.columns)
     for col_name in cols:
          first_valid_index = df.index.get_loc(df[col_name].first_valid_index())
          last_valid_index = df.index.get_loc(df[col_name].last_valid_index())
          if not last_valid_index:
               last_valid_index = len(df[col_name])
          df[col_name].iloc[first_valid_index:last_valid_index] = df[col_name].iloc[first_valid_index:last_valid_index].fillna(method=fill_method)
     return df

```
