Better artifact management

This version replaces the "Manage artifacts" and "Flatten" checkboxes with a dropdown providing expanded artifact deployment options.
1. Unmanaged-flattened. Artifacts are not managed by Jenkins and live in a single folder in the bucket.
2. Unmanaged-structured. Artifacts are not managed by Jenkins and the folder structure of the source project is preserved.
3. Managed-flattened. Artifacts are managed by Jenkins and are flattened.
4 Managed-structured. Artifacts are managed and the folder structure is preserved.

Destination.java was heavily refactored and made easier to unit test. Unit tests were expanded to cover the new functionality.

Other:
- Replaced deprecated HudsonTestCase in S3Test
- Put public member variables behind getter functions
- Reformatted very long lines to make code more readable