Fixes to signatures for endpoints with paths.

The fix for signature v2 ensures that the canonicalized resource path
ends with a '/' in the case when the path is from the service endpoint.
The HttpRequestFactory adds a trailing '/' in this case and this was
causing a mismatch between the canonical and actual path.

The fix for signature v3 ensures that the AWS3Signer takes the endpoint
path into account then creating the canonical resource path.

The fix for signature v4 ensures that the AWS4Signer takes the endpoint
path into account then creating the canonical resource path. The common
functionality for calculation of the resource path is moved from
HttpRequestFactory to HttpUtils.

The fix for S3 signatures ensures the endpoint path is accounted for
when building the canonical string for a REST/HTTP request to S3.