HOT str_replace to use string.replace, not string.Template

str_replace uses python templates, whereas Fn::Replace uses python
string.replace.

During the original review for Fn::Replace, python templates were
decided against because $ would often need double-escaping in shell scripts.
https://review.openstack.org/#/c/31736/

Having different behaviours between Fn::Replace and str_replace will
add complication for users migrating existing templates to HOT.

Another advantage of using straight string replacement is seen when
the template generates a executable script. In this case it is generally
possible to write a template that can also be executed directly in a
dev/test environment. This would often not be possible if the template
format required placeholders to be prefixed with a $.

Whatever behaviour exists when Havana is release will have to be
supported indefinitely so now is the time to decide if this is going
to be fixed.

Closes-Bug: #1228640
Change-Id: I72879b374a3c61dfe0e4004251ab709d914f2e25
Replace first_public_address/first_private_address

OS::Nova::Server attributes first_public_address and first_private_address
will not work with neutron, which allows any network name to be assigned
not just 'public' and 'private'.

This change replaces these attributes with a 'first_address'
attribute which uses the same nova_utils.server_to_ipaddress method
that AWS::EC2::Instance uses to populate all of its IP address
attributes.

This needs to be fixed before the Havana release to avoid these
broken attributes needing to be supported.

Change-Id: I0b4dc009d665e4d7b4cbc32d484a2efc6068320a
Closes-Bug: #1228929
Merge "HOT str_replace to use string.replace, not string.Template"
Merge "Replace first_public_address/first_private_address"