reimplement 'restart' logic

the restart logic for XPool::Process is a little baffling. A restarted
process would try to inherit the channel of the previous process (incase
work is lost during the restart) but a graceful restart makes sure the
queue is empty before the restart can happen.

update docs as well.