Refactor l2_pop code to pass mac/ip info more readably

Previous code used a 2 element array to represent a mac/ip address
pair.  Code assumed that element 0 was mac and 1 was ip.  This made
the code difficult to read and difficult to maintain.  An attempt was
made to insert a third value that failed miserably because of the
position dependence and other code that assumed not only positions but
also the number of elements.

Using a namedtuple seems to be the best way to get better
maintainability.  Named tuples can be compared with regular tuples.
The json serializer still uses an array to represent it so the on-wire
representation of the object has not changed.  A short snip of code
was required to restore the namedtuple from the RPC message.

Change-Id: I7f8c93b0e12ee0179bb23dfbb3a3d814615b1c2e
Closes-Bug: #1352801
Prevent an iteration through ports on IPv6 slaac

A recent change[1] allowed subnets to be deleted even if they
had active IPv6 SLAAC allocations on them. The updated check
was inefficient because it would check every port in the subnet
even if the subnet was a SLAAC subnet. This patch just shortcuts
out that check.

1. I281f5a1553248e09174dc49d0a42aef4b5c44bee

Change-Id: I2c35495b3642c644e4758f28ccddcc076139ec3b
Enable default SNAT from networks connected to a router indirectly

Make outgoing packets to an external interface SNATed regardless
of source address of the packets. As a result of deep review,
any problem was not found with this change.

Change-Id: I71a1288633bb6af2951d571540bbb9ec5e1270e2
Closes-bug: #1386041
Enforce log hints in neutron.services.l3_router

This change enforces log hints use and removes debug level log
translation, modifications are validated through a hacking rule.

Validate that hacking rules apply to directories:
    - neutron/services/l3_router

Change-Id: I2a832c5e0c4ed2a944d199d6a2d6233b8cf838dd
Partial-bug: #1320867
Enforce log hints in neutron.services.firewall

This change enforces log hints use and removes debug level log
translation, modifications are validated through a hacking rule.

Validate that hacking rules apply to directories:
    - neutron/services/firewall

Change-Id: Ie3f75fe207652cbd800cef067a89a819696d1f3a
Partial-bug: #1320867
Enforce log hints in neutron.services.loadbalancer

This change enforces log hints use and removes debug level log
translation, modifications are validated through a hacking rule and
the change respects loggging guidelines.

Validate that hacking rules apply to directories:
    - neutron/services/loadbalancer

Change-Id: I5f2a1a8861728399f3852fc9704eb160c35f7f8d
Partial-bug: #1320867
Drop RpcProxy usage from LBaaS code

Update the LBaaS code to stop using the RpcProxy compatibility class.
The equivalent direct usage of oslo.messaging APIs are now used
instead.

Part of blueprint drop-rpc-compat.

Change-Id: I381394507e4f2daf6d774f70087fef8833c9bab5
Show progress output while running unit tests

This patch imports some magic to enable showing test output as the
tests run.  Seeing output showing tests as they execute is reassuring
that the test run is continuing to make progress.  This originated in
tempest and was then brought over to Nova in this commit:

  https://review.openstack.org/#/c/121914/

Note the justification in that commit to just copy it instead of move
it to a shared repo.

To get the old behavior where you only get output when something
fails, you can set the TRACE_FAILONLY env var.  That originated in
this commit in Nova:

  https://review.openstack.org/#/c/123801/

Change-Id: I6a079ad5f630383650c0f9dee09e04250d0e2c5a
Merge "Enable default SNAT from networks connected to a router indirectly"
Merge "Refactor l2_pop code to pass mac/ip info more readably"
Merge "Prevent an iteration through ports on IPv6 slaac"
Merge "Show progress output while running unit tests"
Merge "Enforce log hints in neutron.services.l3_router"
Merge "Enforce log hints in neutron.services.firewall"
Merge "Enforce log hints in neutron.services.loadbalancer"
Merge "Drop RpcProxy usage from LBaaS code"
Merge branch 'master' of https://github.com/openstack/quantum