BUG: DataFrameGroupBy.value_counts fails with a TimeGrouper
- [x] closes #50486 (Replace xxxx with the GitHub issue number)
- [x] [Tests added and passed](https://pandas.pydata.org/pandas-docs/dev/development/contributing_codebase.html#writing-tests) if fixing a bug or adding a new feature
- [x] All [code checks passed](https://pandas.pydata.org/pandas-docs/dev/development/contributing_codebase.html#pre-commit).
- [x] Added [type annotations](https://pandas.pydata.org/pandas-docs/dev/development/contributing_codebase.html#type-hints) to new arguments/methods/functions.
- [x] Added an entry in the latest `doc/source/whatsnew/vX.X.X.rst` file if fixing a bug or adding a new feature.

Unlike other Groupings, BinGrouper was creating its Grouping based on the labels that were to be in the result. Thus the `Grouping.grouping_vector` length did not in general match the input object, which then fails when combing with other Groupings that do match the input object.

In order to include empty groups, e.g. the 2nd group below

```
df = pd.DataFrame(
    {
        "datetime": to_datetime(["2022-01-01", "2022-01-03"]),
        "values": [2, 3],
    }
)
gb = df.groupby(pd.Grouper(freq="1D", key="datetime"))
print(gb.sum())
#             values
# datetime          
# 2022-01-01       2
# 2022-01-02       0
# 2022-01-03       3
```

added a `uniques` argument to Grouping and then rely on Categorical to encode the groups including those that are missing.
Thanks @rhshadrach 