operations now return State, not StateChange, which has become an internal detail; moved responsibility for hook-completion state changes to the runHook operation. also make StateFile.Write accept a *State instead of a mindless blech of individual params