Add BlockDeviceMapping to CreateImage and RunInstances

This change add BlockDeviceMapping to CreateImage and RunInstances. While
testing against AWS the error "The parameter BlockDeviceMapping is not
recognized" was occurring until the Version was changed to a more recent
API version.
Merge pull request #2 from markpeek/markpeek-blockdevicemapping

Add BlockDeviceMapping to CreateImage and RunInstances
ec2: ability to specify IOPS on block device mapping
Add instance based IAM role authentication

This change consolidates authentication decisions into a single new function.
First it will try using the passed in key/secret, then environment variables
and finally instance based IAM role authentication. Since instance based
IAM role authentication requires an additional token for signing the request,
the existing API has changed slightly since most use cases construct auth via
struct initialization. This will also allow for future changes such as
supporting credential files or STS AssumeRole.
Merge pull request #3 from markpeek/markpeek-awsauth

Add instance based IAM role authentication