Enable validation of payload using validate function
At the moment the validate method only takes the message as an argument and explicitly sets which schema it validates against.
Add a schema argument with a default value so that the same method can be used to validate the message header or payload specifically.
This means we can get more specific error messages.