introduce better/more comprehensive error messages

Update Validator class to be stateless and more effecient on caller side.
Validators with/and/or are now own implementations of Validator in the
org.validcool.validations package, still exposed in Validations class.

Error message are now created by replacing a substring of "${actual}"
with the actuals values. No lambda is passed anymore to Validator.
new Validator<>(val -> val % 2 == 0, "${actual} is not even number");
The error message should contain the verb and negation for the message.

The not-validator will remove the first not substring found in the
passed validators error message pattern. So when taking the validators
from above: not(isEvenNumber()) will produce the error message:
"${actual} is even number".

The and/or associations will now only log the error message of the
error which actually occurd.

The with validator tries to output the parent as well as child name
or value in the error message.