Use six.moves.urllib.parse instead of urlparse

To keep Python 3.x compatibility, use six.moves.urllib.parse to
replace urlparse.

Closes-Bug: #1279611
Change-Id: I712035926f449e1bc5ab1fe85927369b826cb9cc
Fix test_db_plugin.test_delete_port

Also add PortNotFound check to test_delete_port_public_network.

Change-Id: Iec461364345b200e2d17ba26a6c5362eec6d93ef
Closes-Bug: #1282946
Make metaplugin be used with a router service plugin

"l3_plugin_list" configuration parameter of the metaplugin is permitted
blank now.
If "l3_plugin_list" is blank, router extension and extensions which extend
the router extension don't be included in "supported-extension-aliases" of
the metaplugin.
This makes the metaplugin be able to be used with a router service plugin.
Note that if "l3_plugin_list" is not blank, a router service plugin must
not be specified, otherwise the error of the bug report still occurs.

This patch removes some router extension related meaningless codes also.
(e.g.  external-net extension belongs to L2 functionality and be handled
 by core plugins properly.)

Closes-bug: 1266347
DocImpact

Change-Id: I0454bc0a4bd7eda5dad18b0538fb7baebe0b9f91
Merge "Use six.moves.urllib.parse instead of urlparse"
Merge "Make metaplugin be used with a router service plugin"
Merge "Fix test_db_plugin.test_delete_port"