CommandBusCommandAware

:crying_cat_face: 

This pull request tries to protect you from allowing all data to pass through a commandbus. See [CommandBusInterface](https://github.com/qandidate-labs/broadway/blob/master/src/Broadway/CommandHandling/CommandBusInterface.php)

What I would expect 
```
public function dispatch(CommandInterface $command)
```
The problem is that it doesn't even force you to send objects, the argument is mixed.
So you can send
- strings (caused endless loop [link](https://github.com/qandidate-labs/broadway/pull/35))
- array of commands
- events

I understand the reason 'less coupling' but the trade off (mainly not enforcing them to be objects) can be quite nasty. But the beauty of OOP is that there are things like the Open Closed Principle. So I used the adapter pattern to workaround this. 

This is my nerdy attempt to start a discussion about this.  Sure I could just use those classes for myself (and I will if i have to)  but CommandBusCommandAwareInterface feels like a code smell