Have prop attribute access return None by default

resource.prop.__get__ raising an AttributeError as a default value leads
to some interesting code on the user end. An example is in our own code,
in the SecurityGroup initializer, where we try to look into
security_group_rule to convert them from raw data to SecurityGroupRule
objects. That whole loop is wrapped in a try/except for AttributeError,
which would pick up more than the issue of an unset security_group_rule
object, and is not entirely friendly.

Return None as a default value for unset properties. This makes using
them and checking if they've been set much more simple, rather than
having to wrap a lot of your app code in checks for AttributeError.

Change-Id: Iee3e62c10eaed7ecb1a4a882864cc3dd81ad227c
Merge "Have prop attribute access return None by default"