Made UserName optional

Following
http://docs.aws.amazon.com/IAM/latest/APIReference/API_GetUser.html
The UserName argument in iam.GetUser() is optional.

In the case where the UserName is omitted, the response returns information about the user making the request. This is incredibly helpful when running code on an instance with an IAM role.

Fixes #192
support customer s3 SSE keys
Add support for setting QueryFilter conditions.
Default Queue.ReceiveMessageWithParameters() to request all MessageAttributes.
Expose query result metadata to the caller.

QueryTable's signature roughly matches that of Scan now.
Allow custom metadata in multi-part uploads
Add options in Multi
Changed crowdmob namespace to diamondap to get S3 functions to work
Changed import namespace back to crowdmob
Added tests for options
Fixed options tests
Changed imports back to crowdmob for pull request
Move away from inline switch on hard-coded region strings to looking up values in aws.Regions map. This approach is more sane and flexible since adding/removing regions will be done in one place. Also move away from weird dot notation to names Amazon itself uses like us-west-2. Note: this is a breaking change due to the region name convention change. Addresses issue #199
These lines need to be moved so the NextToken makes it into the request properly
ec2: Add support for CreateImage
fix typo
Merge pull request #203 from ProTip/master

These lines need to be moved so the NextToken makes it into the request ...
Update to V4 signing for SNS
Add SetQueueAttributes to SQS
Bugfix: Return error on PutRecord