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

This is a follow-up to PR #2