Implement distinctConsecutiveBy in terms of filterBy2

I realized that `distinctConsecutiveBy` can be implemented in terms of  a more generic function by abstracting over the predicate that compares consecutive elements. I extracted this function as `filterBy2`. The predicate that is given to this function uses the previously emitted and current elements.

Here is a simple example:
```scala
Process(1, 1, 3, 2, 5, 4).filterBy2(_ < _).toList == List(1, 3, 5)
```