Use a physical name matching class in unit tests

This gives us the flexibility to change the format of the physical resource
name.

Change-Id: Ie36453345149291fe04d89b52d7966816e03cda6
Use - instead of . for physical_resource_name delim.

Avoiding using . means that instance hostnames are unique within the stack
(and within the tenant).

This solves 2 real-world use cases:
- tripleo issue, as described in bug: #1184713
- OpenShift template resorts to setting the hostname to ec2_instance_id

This may have an impact on users who are scripting to assume . delimiting,
however this will only affect newly created stacks after this change is
deployed.

Fixes bug: #1184713

Change-Id: I5a8eb358ea9c52162eb9263b9f9e6dcf750d787b
Make Fn::GetAtt add a dependency

This will ensure that resources which get attributes from other resources
are not created until the latter resources are available.

An audit of all the templates in the heat-templates repo revealed that in
only one case did this cause a circular reference, and it was the template
that appeared to be incorrect (it has since been fixed).

Change-Id: Ibd51acdda55c24f665c5ca887040f3564d952c0e
Only call FnGetAtt if resource is in acceptable state.

This will give resource type authors some certainty on what error
checking their FnGetAtt methods will require.

Fixes bug: #1184794

Change-Id: Iec456075c14cd609cf9607f07bce23e4c6b33c0c