[WIP] ENH: Add only_unique group-by aggregation method
I think it would be useful to have a "only unique value" aggregation method. I've implemented a straw-man version so far to get some feedback before I do any more.

- [x] closes #xxxx N/A
- [ ] tests added / passed
- [ ] Ensure all linting tests pass, see [here](https://pandas.pydata.org/pandas-docs/dev/development/contributing.html#code-standards) for how to run them
- [ ] whatsnew entry

Idea is that you often get data-frames where some of the columns are constant across a group-by. Usually, this is collapsed using "first" when doing a group-by, but it would be good to have a version that verifies that the columns are constant as well.

For example:

```python
df = pd.DataFrame({"id": [0, 0, 1, 1], "name": ["Alice", "Alice", "Bob", "Bob"], "score": [0, 1, 2, 3]})
pd.concat([
    df.groupby("id")["name"].only_unique(),
    df.groupby("id")["score"].max(),
], axis=1)
```

```raw
     name  score
id              
0   Alice    0.5
1     Bob    2.5
```

```python
df = pd.DataFrame({"id": [0, 0, 1, 1], "name": ["Alice", "Alice", "Bob", "Charlie"], "score": [0, 1, 2, 3]})
pd.concat([
    df.groupby("id")["name"].only_unique(),
    df.groupby("id")["score"].max(),
], axis=1)
```

```raw
...
ValueError: Expected exactly one unique item in series, but got 2.
```

I've chosen not to drop NA values, so that the exact null value is maintained, but I'm definitely open to changing it.

```python
df = pd.DataFrame({"id": [0, 0, 1, 1], "name": ["Alice", "Alice", None, None], "score": [0, 1, 2, 3]})
pd.concat([
    df.groupby("id")["name"].only_unique(),
    df.groupby("id")["score"].max(),
], axis=1)
```

```raw
     name  score
id              
0   Alice    0.5
1    None    2.5
```
