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`.

    ( 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" ] }