Refactor some router-related methods

This is done in preparation for the distributed
router functionality. Breaking down and factoring
out some functionality helps the DVR work to come
as a more loosely coupled addition to the L3
centralized case. This also ensures that the two
code bases are kept separately to minimize chance
of regression, and simplify code coverage effort.

Partially-implements: blueprint neutron-ovs-dvr

Change-Id: Ide1bc193666ce03a3ae26b1869bde8093ed453ef
Allow L3 base to handle extensions on router creation

By changing the boolean flag, API extensions made to
the router model can be handled correctly: this means
that on router creation, the response body will
contain all the extension attributes being part of
the resource. Prior to this fix, it was only on GETs
or PUTs, leaving the user at loss as to whether
the flag was actually being processed.

Closes-bug: #1325608
Supports-blueprint: neutron-ovs-dvr

Change-Id: I6f913c8417676a789177e00f30eb5875e7aaa3ae
Merge "Refactor some router-related methods"
Merge "Allow L3 base to handle extensions on router creation"