some refactoring in multi.jl

this simplifies things by removing the Waiting table, and using
remotecall_fetch as the most fundamental synchronous function.
remotecall_fetch now uses the level-triggered RemoteValue system,
avoiding a race condition when write operations block.