changes abstract method

Stream<T> changes()

"changes" is not a great name since, by contract, the stream includes the initial, not yet changed value. maybe rename it to "distinctValues()" ?

Implementation

Stream<T> changes();