Remove SELECT FOR UPDATE use in update_firewall

SELECT FOR UPDATE expression, which is triggered with the use of the
SQLAlchemy Query object's with_lockmode('update') method, is
detrimental to performance and scalability of the database
performance code in Neutron due to the lock contention it produces.

SELECT FOR UPDATE can be entirely avoided in update_firewall method
with the use of single-shot UPDATE expressions.

Change-Id: I333f726498192295116ca96ff5ca9012c36a6fd1
Remove chain for correct router during update_routers()

The existing code incorrectly used the stale value from a previous list
comprehension - and deleted the chains for the wrong router :(
(Found via pylint)

Also: change to using a set() rather than a list(), since it is used for
repeated membership tests.

Also: refactor test cases to remove test case duplication.

Closes-Bug: #1362466
Change-Id: I4df400d57bab5427362db47a715576faa6340173
Merge "Remove SELECT FOR UPDATE use in update_firewall"
Merge "Remove chain for correct router during update_routers()"