Add mode to notEmpty() and remove message from allowEmpty().

Having `$message` for allowEmpty() doesn't make sense as it will only
remove validation errors now, not cause them to be triggered. Add
`$mode` to notEmpty() as it is very relevant there.
Expand unit tests and fix issue with notEmpty().