Correctly differentiate between flattened/unflattened query string serialisation

Contains fixes pertaining to #11 and #12:

* A CloudFormation example has been added based on @reinh's example.
* Query service types and EC2 are specifically differentiated (similar to other SDKs) when determining list flattening, or element names for query serialisation purposes.

> It's worth noting that the CloudFront example from the documentation won't work in the `Oregon` region, due to `AWSRegionArch2AMI` not containing the correct mapping.