ENH: rolling apply should behave like groupby and allow us to return a dict
#### Problem description

I really think that `rolling(x).apply(f)` should behave like groupby as it is essentially a group by function just where the groups are overlapping. Therefore one should be allowed to return a dict as a result. i.e. something like this:

```
df = pd.DataFrame({'num_legs': [2, 4, 8, 0],
                    'num_wings': [2, 0, 0, 0],
                    'num_specimen_seen': [10, 2, 1, 8]},
                   index=['falcon', 'dog', 'spider', 'fish'])

df["num_legs"].rolling(2).apply(lambda x: {"first": x[0], "last": x[-1]}, raw=True)
```

#### Expected Output
| index | | num_legs |
| ------ |-| ---------- |
|dog	|first | 2|
||         last| 4|
|spider | first| 4|
||           last|  8|
|fish|	first| 8|
||        last |0|
