ENH: make contiguous groupby easier
`itertools.groupby` groups things contiguously-- great for run length encoding, not so great for partitioning.  This necessitates the `groupby(sorted(items,key=keyfn), keyfn)` dance if you want to separate it.  That's not always what you want either, so you wind up writing

```
def partition(seq, keyfn):
    d = {}
    for x in seq:
        d.setdefault(keyfn(x), []).append(x)
    return d
```

and so on. 

`DataFrame.groupby` is great for data partitioning, but merges discontiguous groups.  Wanting to cluster timeseries -- first x since the last y, etc. -- is a common task.  With some `cumsum` hacks you can do it, but "get a boolean series, see when it's equal to its shifted value to find the transitions, take advantage of the fact that False == 0 and True == 1 to `cumsum` that to get something which grows for each cluster, and then `groupby` on that"  is maybe a little more than I'd expect a beginner to have to do to get back what `itertools.groupby` does naturally.  And if there's an easier way, then we at least should at least make it more obvious.

I'm not sure what the best way to proceed is,  but I've answered variants of this several times on SO, and people wanting a cumsum/cumprod-with-reset is a pretty common numpy request.
