Reuse finagle clients (and the associated connection) for multiple requests

Summary: Instead of building a new finagle client for each request, use a cached client and only build a new one when S3 re-directs to a new host (by returning a 301).

Test Plan:
Tested this with some new (un-submitted) analytics code where thousands of Get requests are fired. The old version of finagle-aws caused the test to run out of file descriptors because the garbage collector did not manage to keep up with releasing connections.

Once this patch is accepted I will apply the changeo a new branch off master and submit a pull request without the factory specific files (build.sbt and .arcconfig)

Reviewers: tberman, merkkila

Reviewed By: merkkila

Subscribers: tberman, justin, stephan, serdar

Differential Revision: http://phabricator.thefactory.com/D2089