vdsm-tool: Change upgrade mechanism

The upgrade decorator is a mechanism within vdsm-tool to allow commands
to only run once. It has flags to override, but being a function
decorator, it did not have any direct access to command line arguments
and did access via sys.argv[2:].

The patch: http://gerrit.ovirt.org/#/c/27481/ adds flags to vdsm-tool and
will break upgrade and its argument parsing. I'm proposing to change the
upgrade from being a decorated function, to a function that operates on
an upgrade object (interface documented in apply_upgrade docstring) and
the command line arguments.

This also allows to have a single argument parser for both
general upgrade flags and specific per-upgrade flags (no current
upgrades define flags but we might want this in future, available via
extendArgParser method, see docs).

Change-Id: I6e1d28570dedfeff9fe60624b1db72d8cadf136a
Signed-off-by: Dima Kuznetsov <dkuznets@redhat.com>
Reviewed-on: http://gerrit.ovirt.org/27193
Reviewed-by: Yaniv Bronhaim <ybronhei@redhat.com>
Reviewed-by: Dan Kenigsberg <danken@redhat.com>