Improve error handling and reporting for installs

This is a sizeable refactor of the way that the Overlay project handles
downloading and installing artifacts. Highlights include:

* Adds a protocol for BinaryArtifacts and adds two implementations for
  Incremental and Release builds. The protocol includes functions to
  retrieve the remote URL and the download file size.

* Utilizes a HEAD request to determine file size when a metadata file is
  not available.

* Checks for 404s before attempting a download. Fails more gracefully
  when something goes wrong during download.

In order to support all these changes, one additional dependency was
added: clj-http-lite.