Make nova-novncproxy usable in a public cloud.

This refactors the nova-novncproxy configuration in TripleO
so that it can be used in a cloud where the compute hosts
don't each have to be assigned a public IP. With the
new configuration the nova-novncproxy is configured
to run on the nova-api (controller) node which
typically will have a public IP assigned to it.

Specific changes include:

 -move novnc element to nova-novncproxy
 -move all the nova-novncproxy stuff out of nova-kvm into
  the new nova-novncproxy element
 -configures Fedora iptables rules to support noVNC
  connections on 6080
 -Adds a new nova.public_ip parameter which is used
  to construct the novncproxy_base_url. This may be
  returned directly to cloud users via
  'nova get-vnc-console' or consumed by Horizon.
 -Set vncserver_proxyclient_address to the real
  local(internal) IP address for the compute host.
  Previously we used 127.0.0.1 which won't work
  unless nova-novncproxy runs on the Nova compute host.
  To do this we use {{local-ipv4}} which should always
  be the Heat provided local management IP address
  for the compute host.

Change-Id: I18cdc36248749390f0ab1e2c454741dbf2736e7f
Closes-bug: #1309510
Merge "Make nova-novncproxy usable in a public cloud."