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
Merge pull request #40 from brightmachine/2-contracts-using-interfaces

further work for contracts to use interfaces instead of abstract classes