return nil instead of throwing AssertionError

The following code will fail with an AssertionError using the
current implementation. This seems a bit unfortunate because it
forces the caller of (validate) to break up validation into
multiple calls to avoid an exception.

(validate {}
  [:email present? "Email is required"]
  [:email email-address? "Email address invalid"])

The above example will now return.

{:email ["Email is required" "Email address invalid"]}