Handle temporary AWS credentials

I've made a change to allow the use of temporary AWS credentials supplied by the STS service. To use temp credentials the caller needs to supply an extra header on the request, X-Amz-Security-Token, containing the token that STS supplies alongside the key and secret. This header also needs to be included in the signed header list.

The changes are backwardly compatible so that if the token is not supplied as part of the AwsCredentials object then the behaviour is the same as it was before the change.

I have added a test to Aws4SignerSpec to check that the header is added and signed correctly.
I'm not a big fan of fold on option. I've re-written it as this to make it a bit more concise:

    val headersToSign = ("host" +: amzSecurityToken.map(_ => AMZ_SECURITY_TOKEN).toSeq.) mkString (",")