Fix type attribute errors

Fix AttributeErrors being raised because AWSProperty doesn't have `type` set.

- Print a nice error if an incorrect property is set on AWSProperty (which doesn't have a 'type').
- Not all AWSProperty instances must have properties (for example, Cloudfront's S3Object type). Only fall through to a dict with a 'Type' property if the current class has a 'type'.