refactor how channel ending/erroring is handled, state model is much simpler now
don't share paths we haven't validated
overhaul of channel end/err state handling, few bug fixes