Add command validation to CommandBus

To synchronously validate a command *before* it is executed asynchronously, you can now define a `validate()` instance method on your command objects. If present, that method will be invoked by the CommandBus synchronously and fail the command, should the validation fail.