DMC-1381: Refactor the HTTP copy modes
The reason for this change was to have the DEFAULT_COPY_MODE
config option configurable per Storage Endpoint.
However, requirements regarding the copy mode have been added in the past on a case-by-case basis. Adding this additional restriction was difficult and would've made the surrounding code more confusing.
This merge request cleans up the HTTP Copy Mode selection and fallback process.
A standalone "HttpCopyMode" class is introduced, which will encapsulate the copy mode and streaming flags, as well as iterate through the copy mode fallbacks. Many utility functions previously used to play with the copy mode have now been moved instead to this class. A factory method to generate the CopyMode object is provided
Closes DMC-1381