Channel-mapper fn can now do validation

It can reject a document by throwing, just like a validation function,
or it can call reject(httpStatusCode, message) and return normally.
It now takes a second 'oldDoc' parameter just like a validator.

We can probably remove the Validator class entirely, and just run
old-style validation functions with the ChannelMapper.