Wrap everything in error handling block

On second thought I think it's better to leave the runlock at the
beginning, but have everything inside the begin/rescue/ensure in do_run.
The way I structured my last commit could result in a run waiting for a
very long time for a run lock to release and then proceeding with old
data from Ohai and the Chef server.