Standardise resource names in Invalid Attribute errors

These should always refer to the resource name in the template (i.e.
logical resource name), and never the physcial resource name (since these
errors necessarily occur during validation, before any physical resource is
created).

Change-Id: I6cf6625cf32a90acb27adc6348695c086dc5e119
Return None for physical resource name during validation

During template validation, the resources have not been stored in the
database. Therefore any resources that return self.physical_resource_name()
in either FnGetRef() or FnGetAtt() would cause assertions whenever either
of those functions were called during validation. Instead, return None from
physical_resource_name() in this phase, as we do for other data that is not
available yet during validation.

Fixes bug #1191931

Change-Id: I1a5b17557ae1ca2600fb930e74eb5248c82e0326