Handle double Ctrl-C in HookRunner

There was an extreme edge case that could occur (though I never saw it
in practice) where pressing Ctrl-C twice could result in unexpected
interrupts sneaking in when the code suggested that wasn't possible.

Handle this by adding a special `disable_until_finished_or_interrupted`
method that atomically reenables interrupt handling such that only one
Ctrl-C triggered `Interrupt` could ever get into the code.

See comments for details.

Change-Id: I3cd26853c4ae7a6447f04f5d4351cd0a93850b5b
Reviewed-on: http://gerrit.causes.com/41192
Tested-by: jenkins <jenkins@causes.com>
Reviewed-by: Shane da Silva <shane.dasilva@brigade.com>