BUG: groupby.shift returns different columns when fill_value is specified
- [x] closes #41556
- [x] closes #26615 
- [x] tests added / passed
- [x] Ensure all linting tests pass, see [here](https://pandas.pydata.org/pandas-docs/dev/development/contributing.html#code-standards) for how to run them
- [x] whatsnew entry

This fixes the minimal reproducing examples from the original bug report #41556. 

**With master**, specifying `fill_value` causes the index columns to be returned and to include the `fill_value` in the grouping columns. 

```
In [4]: import pandas as pd
   ...: 
   ...: df = pd.DataFrame({'a': [2, 1, 2, 1], 'b': ['x', 'x', 'y', 'y']})
   ...: 
   ...: df.groupby('a').shift(1)
Out[4]:
     b
0  NaN
1  NaN
2    x
3    x
In [5]: df.groupby('a').shift(1, fill_value='fill')
Out[5]:
      a     b
0  fill  fill
1  fill  fill
2     2     x
3     1     x
```

**With this PR**, only the value columns are returned in both cases, and the fill is applied correctly.

```
In [1]: import pandas as pd
   ...: 
   ...: # On master, using fill_value causes the index columns to be returned
   ...: df = pd.DataFrame({'a': [2, 1, 2, 1], 'b': ['x', 'x', 'y', 'y']})
   ...: 
   ...: df.groupby('a').shift(1)
Out[1]:
     b
0  NaN
1  NaN
2    x
3    x
In [2]: df.groupby('a').shift(1, fill_value='fill')
Out[2]:
      b
0  fill
1  fill
2     x
3     x
```

On master, if `fill_value=None` then `_get_cythonized_result` was used. But if `fill_value` was specified, then `self.apply` was used, because `_get_cythonized_result` couldn't take the `fill_value`. I've updated `_get_cythonized_result` so it can handle the `fill_value` itself. This means `Groupby.shift` follows the same code path and returns the same structure of output, whether or not `fill_value` is specified. 

**Test**
The bug reported in the original issue should have been caught by an existing test, except that the existing test extracts the values columns ( `[['Z']]` ), before doing its comparison to the expected output. This was hiding the fact that the structure of the result depended on `fill_value` being specified. 

https://github.com/pandas-dev/pandas/blob/1.2.x/pandas/tests/groupby/test_groupby_shift_diff.py#L52

Removing the extraction of the data column ( `[['Z']]` ) means we now have a test that catches the bug reported in the original issue. (The test fails on master, but passes on this PR). 
