Add overloads to `utils/error!` that use ex-info

Callers can now optionally pass a map to `utils/error!`.  This map will
be accessible on the ex-data of the resulting exception `(ex-data *e)`.
Modify `s/validate` to pass a map to `utils/error!`

The map has three keys - the schema, the data and the error. It is
subsequently accessible by calling `ex-data` on the resulting exception.

This addresses #30 - becaues if the cause of our data is hidden in a long
sequence and truncated in the repl, like so ...

     (s/validate [Number] `[1 2 ~@(range 100) "bob"]) ExceptionInfo
     Value does not match schema: [nil nil nil nil nil nil nil nil nil
     nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil
     nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil
     nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil
     nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil
     nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil
     nil nil nil nil nil nil ...]  clojure.core/ex-info (core.clj:4327)

... all is not lost, for we can do this ...

     (remove nil? (:error (ex-data *e)))

... and find that it is "bob" that is the cause of all our troubles.

     ((not (instance? java.lang.Number "bob")))
Merge pull request #33 from danielneal/feature/validation-error-in-ex-info

Feature/validation error in ex info