Ensure core plugin deallocation after every test

The unit tests were previously consuming an excessive amount of memory
(4GB+) due to plugin instances persisting in memory.  Deallocation was
not possible where a combination of circular references and mocking
was involved.  This patch ensures that only NeutronManager holds a
plugin reference and that all other references are instances of
weakref.proxy.  Residual memory footprint for tox executed on a
12-core machine has been reduced to ~1.3GB.  Plugin deallocation is
validated at the end of each test to prevent regressions.

This change also includes fixes to unit tests that depended on plugin
instances persisting across tests.

Conflicts:

	neutron/tests/base.py
	neutron/tests/unit/ml2/test_mechanism_odl.py
	neutron/tests/unit/test_db_plugin.py

Partial-Bug: #1234857
Change-Id: Ia1f868c2d206eb72ef77d290d054f3c48ab58c94
(cherry picked from commit 6db48dd688d45ba41863926fa1a91d2d3ea484ec)
Merge "Ensure core plugin deallocation after every test" into stable/icehouse