Added Reject message.

This is not yet ready for merge (no tests). Please just check the logic, etc., and let me know if it looks reasonable.
Hmm, should this really be optional? You definitely don't want to take a nil optional and make it an empty string, because that is unexpected.

I say make it non-optional. In general there will always be a reason message.