Add abstract link helper class with common link functionality.
Use AbstractLinkHelper to provide common functionality for S3 and CloudFront.

This adds setScheme() support for CloudFront and keeps things DRY.
Throw an exception instead of creating a signed protocol relative link.
Add CloudFrontLink tests for protocol relative URLs.