openPortForwarding: use HasNetworkAddresses

- I’m unsure about this change!
-- It’s good for no-op port-forwarding because then have necessary addresses.
-- Will it make some cloud port-forwarding hard, where need the machine
   id rather than just its IP?
- For no-op port forwarder,
Adds ConcurrentReachableAddressFinder
PortForwarder: handle entity with multiple locs

- use findUniqueMachineLocation, rather than Iterables.getOnlyElement
Adds SubnetTier.PORT_FORWARDER_TYPE
NoopPortForwarder: choose reachable machine address

- on openPortForwarding(targetMachine, targetPort, ...), prefer IP of
  machine that is reachable.
Adds MANAGEMENT_ACCESS_REQUIRES_PORT_FORWARDING

- only set up port-forwarding to 22 in JcloudsLocation if needed by
  management access
Adds PortForwarder.inject(owner, locations)
pom extends brooklyn-downstream-parent instead of brooklyn-parent
Adds PUBLICLY_FORWARDED_PORTS for SubnetTier

- A config key that can be set on an entity within a SubnetTier,
  where the config lists a set of attributes indicating ports to be
  opened. When these attributes are set, it will openPortForwarding
  for the given port, and advertise the public endpoint as a new
  attribute on the entity.
  Thus one can describe a blueprint in pure YAML
port-forwarded machines: don’t wait for ssh-reachable if WAIT_FOR_SSHABLE=false
SubnetTier support for vcloud-director
Merge pull request #2 from aledsage/feature/vcloud-director-SubnetTier

Feature: vcloud-director SubnetTier