Fully managed S3 artifacts and assorted changes

Hi,

This is a cleanup and repost of the pull request #2, and so supersedes it (I'm going to close it soon).

This 3 commit changeset adds the following features, while still keeping the original behavior available:

* upload directly from the slave. This is for instance very useful if your slaves live in EC2 but not your master. The original behavior was to stream the files content to the master then upload to S3. This is not enabled by default to respect the original behavior.

* fully managed S3 artifacts, to mimic master uploaded artifacts:
  + upload in a specific folder scheme (jobs/[jobname]/[buildnumber]/) that allows Jenkins to remember where the artifacts were uploaded
  + link the uploaded artifacts to the build that produced them
  + automatic fingerprinting of uploaded artifacts
  + specific UI in the build and job page to retrieve automatically the artifacts of respectively a given build and the latest successful build. This allows to download a build artifact very easily without logging-in into S3 or using a different client.
  + "S3 Copy Artifact" build step that mimic the original "Copy Artifact" plugin, allowing to retrieve automatically the artifacts uploaded from a previous build (choice of the build is possible, defaulting to last successful).
  + automatic removal of artifacts of removed or garbage collected builds

* Since commit 7198ceea723d6ba6faa731aceae81c4befa8f965, the artifacts are always uploaded even if the build failed. This patchset introduces a UI checkbox to prevent this feature allowing to not upload artifacts when the build has failed.

This code has been in production on our Jenkins instance since about 2 years without any adverse effect.

Please review, comments are very welcome,
Many Thanks!
Brice