Generate error if the value of ARG-NAME doesn't satisfy PREDICATE.
PREDICATE is a function name (a symbol) or an expression to compute.
TYPE-STRING is a string to use in the error message, such as a list.
ERROR-TYPE-NAME is a keyword that tells condition handlers what type was desired.