[AIM] Retry L3 Plugin Operations
[AIM] Retry L3 Plugin Operations

While testing https://review.opendev.org/#/c/704705/, which moves
calls to Neutron REST APIs from GBP policy driver precommit methods to
postcommit methods, which are outside transactions, it was discovered
that L3 Plugin operations such as add_router_interface are not retried
if a StaleDataError occurs. In the upstream l3_db module, these
methods have retry decorators, but those decorators have no effect
because the AIM l3_plugin methods call the inherited upstream methods
within transactions. We therefore add retry decorators to the AIM
l3_plugin methods.

Note that https://review.opendev.org/#/c/706631/ removes the top-level
transactions in these l3_plugin methods, so these retry decorators
will no longer be necessary when that patch is merged. But that patch
is not planned to be back-ported beyond stable/queens, so this fix
will still be needed in the older stable branches.

Change-Id: I6fedf3821a1a8babfc928ef21917ff4b69aac7c6

noironetworks/group-based-policy,noironetworks/group-based-policy