a meaningful stacktrace for BatchUpdateException

Currently, the following stacktrace is produced when an error occurs running migrations with postgres:

```
aused by: java.sql.BatchUpdateException: Batch entry 1 <unknown> was aborted.  Call getNextException to see the cause.
	at org.postgresql.jdbc2.AbstractJdbc2Statement$BatchResultHandler.handleError(AbstractJdbc2Statement.java:2586)
	at org.postgresql.core.v3.QueryExecutorImpl$1.handleError(QueryExecutorImpl.java:459)
	at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1811)
	at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:407)
	at org.postgresql.jdbc2.AbstractJdbc2Statement.executeBatch(AbstractJdbc2Statement.java:2725)
	at clojure.java.jdbc.deprecated$execute_batch.invoke(deprecated.clj:423)
	at clojure.java.jdbc.deprecated$do_commands$fn__231.invoke(deprecated.clj:435)
	at clojure.java.jdbc.deprecated$transaction_STAR_.invoke(deprecated.clj:389)
	at clojure.java.jdbc.deprecated$do_commands.doInvoke(deprecated.clj:434)
	at clojure.lang.RestFn.invoke(RestFn.java:408)
	at ragtime.sql.files$run_sql_fn$fn__364$fn__365$fn__366.invoke(files.clj:80)
```

added a catch for BatchUpdateException in addition to SQLException

updated to check that next exception exists

changed to when-let