Simplify using external routers and metadata

The dhcp agent only pushes out the metadata
static route when the subnet is isolated, and it
determines that by checking if the gateway_ip is
not set. This makes it tricky to use external
routers and metadata from dhcp at the same time.

This patch changes how the dhcp agent determines
that the subnet is isolated. It now considers it
isolated if there is no Neutron router on it.
This makes it straightforward to use an external
router on a provider network and get the
metadata from the dhcp namespace.

Change-Id: I0e29a2f058564c267176dab26da00f6ef579808b
Closes-Bug: 1236783
ExtraRoute: fix _get_extra_routes_by_router_id()

router_id filter wasn't properly applied to the query
so the func returned all extra routes of all routers.

Closes-Bug: #1248219
Change-Id: I77733ee7994c8fccbbc966ccabd83b8fe4def8d5
Don't shadow str

In the  agent/linux/ovs_lib.py we were shadowing the str keyword with
local variable. Let's not do that.

Change-Id: If800804b1e1f12d782bac524c92f300bd77fdd3c
Merge "ExtraRoute: fix _get_extra_routes_by_router_id()"
Merge "Don't shadow str"
Merge "Simplify using external routers and metadata"