Waiting for a job to complete is split into a dedicated function,
outside of `waitForVM()`. Functions only waiting for the job to complete
will use this new function instead. The "job is done" testing logic is
also casted into a separate function.
The original `waitForVM()` function is now waiting for the job to
complete, then retrieve the VM. This introduces an extra API call which
could be avoided by having a `waitForJob()` return the last response but
this makes the code simpler for other users and adding a special variant
just for that seems to be overkill.
Signed-off-by: Vincent Bernat <Vincent.Bernat@exoscale.ch>