Using the model as a declarative source, generate and schedule schema
changes into expand, migrate and contract phases. This allows some
(and potentially all) of the schema changes to be performed while
services are still running, reducing downtime during deploys.
Updated based on code review to move from iteritems to items based on
recent lists discussions.
Partially-Implements: blueprint online-schema-changes
Change-Id: If666d5162674aaa874ff2c40799f29e23856544d