Return nil instead of throwing AssertionError

The following code will fail with an `AssertionError` using the
previous implementation. This seems a bit unfortunate because it
forces the caller of to split validation into multiple calls to
avoid an `AssertionError`.

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

The above example will now return.

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