further work for contracts to use interfaces instead of abstract classes

Changes include:

- a new ProjectorInterface for the Projector abstract class
- CommandHandling and ReadModel scenarios to use interfaces rather than abstract classes