Fix issues with provider networks and public ips

The current public IP address implementation layers a VLAN access port
underneath the exterior bridge - br-ex/br-ctlplane. This prevents the
use of Neutron provider network tagging because the access port
overrides everything.

Instead, put public IP addresses in an access port on top of br-ex,
allowing provider networks to be tagged by Neutron openflow rules.

As part of this we allow a new non-default route, so that IPMI
connectivity is not lost when the default route is put onto a VLAN.
This is only needed for the seed - the undercloud can receive this via
DHCP.

The change is backwards compatible - though the old method really is
broken so I've marked it as deprecated in the docs and the code.

We will need to change our heat templates and then incubator glue code
to use the new option before the bug can be closed.

Partial-Bug #1325114

Change-Id: I3f77f72ac623792e844dbb4d501b6ab269141f8e
Merge "Fix issues with provider networks and public ips"