Fix issues with syncing files

* Only sync artifacts with `:out-path` when there are artifacts to sync.
  Otherwise, running a build like `boot repl` that isn't producing
  artifacts causes the `:out-path` directory to be emptied
  unnecessarily.

* When syncing dirs via call to `sync!` with arguments, use MD5 hash of
  files to determine novelty, not last-modified times. This allows a
  more functional, immutable-ish treatment of output files while
  maintaining modified times that other tasks may be using to detect
  novelty.