Extend groupBy to handle non-equivalence relations.

Update DDocs.

Add unittest for [13595](https://issues.dlang.org/show_bug.cgi?id=13595).

Supporting non-equivalence relations (treated as a predicate between adjacent elements) allows for more interesting predicates, like maximum adjacent difference (added as ddoc example), word boundary testing, etc.. This comes at a performance cost, though, so the `isEquivRelation` parameter was added to fallback to the original implementation when the user is sure their predicate is an equivalence relation.