Introducing AbstractDiscriminator base class

Introducing `AbstractDiscriminator` base class to avoid repeated `start()`/`stop()` implementation in each concrete `Discriminator<E>`.

`started` field extracted to base class. Shouldn't it be `volatile`?

I have commit rights but wanted someone to review this first and pull.