Upgrade enhancements

Refactor the upgrade code to use well-defined step and itinerary structures. Return a JSON payload of
all relevant upgrade data to facilitate enhancements in higher level upgrade orchestration tools.

Add a new '--rerun' feature to oo-admin-upgrade which allows the re-upgrade of the last run's errors,
facilitating an "upgrade until it succeeds" workflow.