add validation/defaults to findOneAndUpdate

Based off pull request #2335