Introduce havana initial state

This patch replaces folsom initial state and all migrations
from folsom to havana, with a new, configuration independent
initial db state, corresponding to the havana release.

In order to avoid large modules, "init ops" modules have been
created for all plugins, service plugins, and extensions.

Some migrations after the havana release were amended or
removed to reflect the new initial state being introduced.

Partially-implements: blueprint reorganize-migrations

Change-Id: I47bfd0d26fad1373013ae0d5716266ca40c493c6
Make Juno migrations config independent

This patch amends migrations added after the icehouse release
and before the healing migration.
Migrations are changed in a way that they are not anymore
dependent on configuration parameters but are anyway aware of
the fact that the database has not yet been healed.

To this aim, amended migrations now will need to inspect the
current schema and cannot be anymore be used in offline mode;
this is consistent with the behaviour of the healing migration.

This patch does not remove the logic for generating and
managing configuration-dependent migrations. For this reason
upgrade and downgrade routines still accept the active_plugins
parameter, which will not be used.

Change-Id: I9d55a01c64ef555b7774099f497c9eea596aea6e
Partially-implements: blueprint reorganize-migrations
Fix a test_db_plugin unit test side_effect usage

One of the unit tests didn't correctly use the side_effect
parameter for a mock to return different responses to multiple
calls, which resulted in an extra try-except block and an inline
note. This commit fixes the side_effect and removes the extra
catching code.

Change-Id: Ifa1a6a15025b710ecbba956b5b848e32314cf0cf
Add HA support to the l3 agent

* Add HA mixins used by RouterInfo and LNAT3Agent
* For HA routers: Internal, external and floating IP addresses are no
  longer configured by the agent. Instead the interfaces and addresses
  are passed to a keepalived configuration, which configures the
  addresses when the router transitions to the master state.
* Only the master instance of the router opens the metadata proxy.
  This happens due to keepalived notification scripts that are
  called upon state transitions.
* Extra routes are handled via keepalived virtual routes and are
  no longer configured by the agent.
* HA routers create a 'HA device' on a VRRP-traffic only HA-network.
* Functional testing: Add two new tests to the L3 agent:
    1) Translation of a router configuration to a keepalived
       configuration.
    2) HA specific events when creating a HA router - Assert that
       keepalived is up, etc.

Change-Id: I83f2a5d2af42164c42773b385ba7b00872eed54e
Implements: blueprint l3-high-availability
Co-Authored-By: Assaf Muller <amuller@redhat.com>
Merge "Fix a test_db_plugin unit test side_effect usage"
Merge "Introduce havana initial state"
Merge "Make Juno migrations config independent"