Prefer case-insenstive header comparisons

Follows up to #116.
diff --git a/apis/atmos/src/main/java/org/jclouds/atmos/filters/SignRequest.java b/apis/atmos/src/main/java/org/jclouds/atmos/filters/SignRequest.java
index 6f308ea..8d4a563 100644
--- a/apis/atmos/src/main/java/org/jclouds/atmos/filters/SignRequest.java
+++ b/apis/atmos/src/main/java/org/jclouds/atmos/filters/SignRequest.java
@@ -90,7 +90,7 @@
       builder.put(AtmosHeaders.UID, creds.get().identity);
       String date = timeStampProvider.get();
       builder.put(HttpHeaders.DATE, date);
-      if (request.getHeaders().containsKey(AtmosHeaders.DATE))
+      if (request.getFirstHeaderOrNull(AtmosHeaders.DATE) != null)
          builder.put(AtmosHeaders.DATE, date);
       request = request.toBuilder().replaceHeaders(Multimaps.forMap(builder.build())).build();
       String signature = calculateSignature(createStringToSign(request));
diff --git a/apis/s3/src/main/java/org/jclouds/s3/filters/Aws4SignerForAuthorizationHeader.java b/apis/s3/src/main/java/org/jclouds/s3/filters/Aws4SignerForAuthorizationHeader.java
index f481fc0..41091f7 100644
--- a/apis/s3/src/main/java/org/jclouds/s3/filters/Aws4SignerForAuthorizationHeader.java
+++ b/apis/s3/src/main/java/org/jclouds/s3/filters/Aws4SignerForAuthorizationHeader.java
@@ -124,9 +124,9 @@
       signedHeadersBuilder.put(HttpHeaders.HOST.toLowerCase(), host);
 
       // user-agent
-      if (request.getHeaders().containsKey(HttpHeaders.USER_AGENT)) {
-         signedHeadersBuilder.put(HttpHeaders.USER_AGENT.toLowerCase(),
-               request.getFirstHeaderOrNull(HttpHeaders.USER_AGENT));
+      String userAgent = request.getFirstHeaderOrNull(HttpHeaders.USER_AGENT);
+      if (userAgent != null) {
+         signedHeadersBuilder.put(HttpHeaders.USER_AGENT.toLowerCase(), userAgent);
       }
 
       // all x-amz-* headers
diff --git a/apis/s3/src/main/java/org/jclouds/s3/filters/Aws4SignerForChunkedUpload.java b/apis/s3/src/main/java/org/jclouds/s3/filters/Aws4SignerForChunkedUpload.java
index 8729054..91a0d4e 100644
--- a/apis/s3/src/main/java/org/jclouds/s3/filters/Aws4SignerForChunkedUpload.java
+++ b/apis/s3/src/main/java/org/jclouds/s3/filters/Aws4SignerForChunkedUpload.java
@@ -160,9 +160,9 @@
       signedHeadersBuilder.put(HttpHeaders.HOST.toLowerCase(), host);
 
       // user-agent, not a required signing param
-      if (request.getHeaders().containsKey(HttpHeaders.USER_AGENT)) {
-         signedHeadersBuilder.put(HttpHeaders.USER_AGENT.toLowerCase(),
-               request.getFirstHeaderOrNull(HttpHeaders.USER_AGENT));
+      String userAgent = request.getFirstHeaderOrNull(HttpHeaders.USER_AGENT);
+      if (userAgent != null) {
+         signedHeadersBuilder.put(HttpHeaders.USER_AGENT.toLowerCase(), userAgent);
       }
 
       // all x-amz-* headers
diff --git a/apis/sts/src/main/java/org/jclouds/aws/filters/FormSignerV4.java b/apis/sts/src/main/java/org/jclouds/aws/filters/FormSignerV4.java
index ca58fb0..a0c6657 100644
--- a/apis/sts/src/main/java/org/jclouds/aws/filters/FormSignerV4.java
+++ b/apis/sts/src/main/java/org/jclouds/aws/filters/FormSignerV4.java
@@ -114,8 +114,8 @@
     */
    @Override
    public HttpRequest filter(HttpRequest request) throws HttpException {
-      checkArgument(request.getHeaders().containsKey(HOST), "request is not ready to sign; host not present");
       String host = request.getFirstHeaderOrNull(HOST);
+      checkArgument(host != null, "request is not ready to sign; host not present");
       String form = request.getPayload().getRawContent().toString();
       Multimap<String, String> decodedParams = queryParser().apply(form);
       checkArgument(decodedParams.containsKey(ACTION), "request is not ready to sign; Action not present %s", form);