Add scheduler unit tests to enable bug fixes and refactoring

Improves the coverage for DVR scheduling and will allow safer bug
fixes and refactoring in follow-on patches.

Change-Id: I02d0126e31adcab88a7ee82ba1cb76f952c9a68c
Partial-bug: #1353266
Partial-bug: #1356639
Co-Authored-By: Swaminathan Vasudevan <swaminathan.vasudevan@hp.com>
Co-Authored-By: Carl Baldwin <carl.baldwin@hp.com>
Remove subnet_id from check_ports_exist_on_l3agent

Refactor check_ports_exist_on_l3agent so that subnet_id no longer
needs to be passed.  Instead it calls get_subnet_ids_on_router.  This
helps to pave the way for removing hints from schedule router.

Partial-bug: #1353266
Partial-bug: #1356639
Co-Authored-By: Swaminathan Vasudevan <swaminathan.vasudevan@hp.com>
Co-Authored-By: Carl Baldwin <carl.baldwin@hp.com>

Change-Id: I6e9dcb0b899294bb4cf3e3d616a0a690049c338e
Call unbind_snat_servicenode from schedule router

Refactor to move the call to plugin.unbind_snat_servicenode from
schedule_snat_router to _schedule_router.  This is a move to pave the
way for removing hints from schedule router.

Partial-bug: #1353266
Partial-bug: #1356639
Co-Authored-By: Swaminathan Vasudevan <swaminathan.vasudevan@hp.com>
Co-Authored-By: Carl Baldwin <carl.baldwin@hp.com>

Change-Id: I062d8cc3cb870bbaa033d5b107a7dd868dfafa19
Remove hints from schedule_router

Partial-bug: #1353266
Partial-bug: #1356639
Co-Authored-By: Swaminathan Vasudevan <swaminathan.vasudevan@hp.com>
Co-Authored-By: Carl Baldwin <carl.baldwin@hp.com>

Change-Id: Ie6b55e5d0d70be74b19c91994e52eb1719e32fef
Avoid an extra database query in schedule_snat_router

bind_snat_servicenode already knows the chosen_agent.  By waiting
until after it is called, we can use it to avoid another db query.

Partial-bug: #1353266
Partial-bug: #1356639
Co-Authored-By: Swaminathan Vasudevan <swaminathan.vasudevan@hp.com>
Co-Authored-By: Carl Baldwin <carl.baldwin@hp.com>

Change-Id: Iba5668b2717e188d5289ede982bfc1b46f4eeb5b