Fix IpNetnsCommand to execute without root_wrapper when no netns

IpNetnsCommand accept execution with a network namespace, and
that requires root privileges and a root_wrapper.
IpNetnsCommand does accept no namespace too, in that case, the
root_wrapper doesn't have to be present necessarily, unless the
command we're executing requires root privileges itself.

This patch fixes the check condition on IpNetnsCommand execute
method.

Change-Id: I5ab2f3f1daf4a5a080611dbcd3dbd43292f6766a
Closes-Bug: #1358196
Add functional test for l3_agent

In order to insert the HA related code into the L3
agent, as part of blueprint l3-high-availability,
it's important to add functional tests for the L3 agent.

The L3 HA patch will use the framework provided here
to implement additional HA specific tests.

Implements: blueprint l3-high-availability
Change-Id: I49ddc95a0c41330580fcec6ba05c72684248af5e
Fix state_path in tests

cfg.CONF.state_path is set to a random temporary directory
in neutron.tests.base:BaseTestCase.setUp. This value was then
over written in neutron.tests.unit.__init__. Tests that need
to read or pass cfg.CONF.state_path were getting the directory
from which the tests were running and not the temporary directory
specially created for the current test run. Note that the usage
of state_path to set lock_path, dhcp state path and the likes
was working as expected, and was not affected by this bug.

Closes-Bug: #1363058
Change-Id: Ib45f663fadaf0f3b4a79a0db4128822187b61ecc
Merge "Fix IpNetnsCommand to execute without root_wrapper when no netns"
Merge "Add functional test for l3_agent"
Merge "Fix state_path in tests"