Add s3 client and wire it in

Ready for review.

We went with a modified version of 2 below. More specifically the request flow is now as follows.

  1. If the thumbnail exists on CEPH
       1. read it in locally in memory
       2. close the connection
       3. send it back to the client
  2. If the thumbnail does not exist
       1. download the original
       2. thumbnail the original
       3. in the background, upload the thumbnail no CEPH
       4. stream the thumbnail from the local disk back to the client

/cc @nmonterroso @ljagiello @Wikia/platform-team 

Todo:
 * [x] fix the s3 tests
 * [x] confirm that this works with the local storage interface
 * [x] add a thumbnail clean up background task. Consider using [`at-at`](https://github.com/overtone/at-at). Should we also use this for cleaning up originals?. Let's do the thumbnail clean-up with chef. [https://wikia-inc.atlassian.net/browse/PLATFORM-425](https://wikia-inc.atlassian.net/browse/PLATFORM-425)
 * [x] replace `throw` with [`throw+`](https://github.com/scgilardi/slingshot)
 * [x] add the content-type header when we `s3/put-object`
Should the implementation of this method for ```java.lang.String``` and ```java.io.File``` be the ```:default```?