Add functionality required for deploying pasteup via magenta

 - More flexible cache-control settings based on pattern matching of key name
 - Ability to lookup target bucket via a specified resource
Make improvements as suggested by @bmjames
Merge pull request #96 from guardian/sh-s3-upload-pasteup

Add functionality required for deploying pasteup via magenta
Improve error message when resource cannot be looked up
Fix issue #8 by giving sensible error on no deploy.json
Add flexibility over key generation in S3Upload

 - Fix prefixStage so that it actually works
 - Add prefixPackage
 - Write some tests to test the options
Fix dog-piling of preview

If a preview takes longer than the timeout of the ZXTM or another component then
the frontend immediately requested it again eventually causing massive dog-piling
of previews in riff-raff.

We fix this by only processing each request once, handling the preview
calculations in the background, and using a unique ID to track each request for
a preview.
Add count of hosts in deployinfo hosts view
Break getPreview apart for clarity (suggestion from @rrees)
Merge pull request #97 from guardian/sh-fix-preview-dog-piling

Fix dog-piling of preview
Use shell command for unzip rather than java implementation (retains file modes)
Add request logging to help debugging ZXTM dropouts
Merge pull request #99 from guardian/sh-access-log

Add request logging to help debugging ZXTM dropouts
Merge pull request #98 from guardian/sh-use-shell-unzip

Use shell command for unzip rather than java implementation
Instantiate a new parser for every request as it is not threadsafe
Don't use proxy when building in GC2
Ensure that we don't blow up if we are executing without any root context
CompressedCopy task has a host and should say as much
oops, should be an option
Order deploy tasks by host groups

Riff-Raff needs to be more intelligent about the order it processes hosts.  Historically, it has used the
ordering in the deployinfo file.  Now we finally make use of the 'group' tag on each host.  This tag
indicates a logical cluster of nodes of which only one should be taken out of service at any one
point in time.

The tasks are now reordered to rotate through each of the groups so we alternate between data centers, regions
or availability zones as appropriate.

The hosts in the deployment info tab are shown in their expected execution order.