Adds get_clean_steps and execute_clean_steps for the agent. Also
implements prepare and tear_down for cleaning to ensure the agent
is booted during cleaning. These bits should be factored out to
the boot interface when that merges in L.
Adds checks for cleaning steps in the heartbeat handler.
Adds parameters to the dhcp functions to pass in VIFs instead
of relying on the cached ones in the Ironic port objects. As
cleaning can start before Nova can unplug those ports, we
should ignore the cached VIFs and use the ones we create.
Changes _do_next_clean_step to acquire a lock on its own so
cleaning from do_node_tear_down and continue_cleaning both
work.
Implements blueprint implement-cleaning-states
Change-Id: Ia2500ed5afb72058b4c5e8f41307169381cbce48
Depends-on: Ic38de10668c97648d073fdf9a3afc59712057849