Cleanup and gate on hacking E713 rule

This fixes the offending instances of the rule
and removes it from the ignore list in tox.ini
so that we can gate on the E713 rule.

Change-Id: I1f9ef23a8569252b5b6fa660d0d200b1702056d0
Deallocate the network if rescheduling for Ironic

Ironic (and any other driver that limits the allowed MAC addresses
on an instance will fail if the rescheduled instance runs on a node
that has a different constraint for MAC addresses. To deal with this
we deallocate the network (rather than e.g. trying to lazy update it)
because Nova can't know what the implications of leaving the network
allocated are *when MAC limits are in place* - and we expect them to
be in place when external systems are constrained, so being
conservative is a good idea.

However the code to trigger this looked at dhcp options (which drivers
can safely update pre-boot) not MAC addresses (which can cause conflicts
in Neutron if left in-place).

Change-Id: I59e748db7a943d5a36d75ef63b2a1ec458c58937
Closes-Bug: #1342919
Make BDM dict __init__ behave more like a dict

Currently we can't pass values as kwargs to BlockDeviceDict classes.
This is a common way to call a dict constructor so it breaks the dict
abstraction a bit.

This patch fixes it in a backward compatible way.

Change-Id: I31117eecba4f060cb9c7fc3d329f70fd369b168d
Merge "Deallocate the network if rescheduling for Ironic"
Merge "Cleanup and gate on hacking E713 rule"
Merge "Make BDM dict __init__ behave more like a dict"