Enable actor publishing at random high-level port

With this patch, using 0 as port parameter to `io::publish` instructs the OS to choose a random high-level port available for binding. The user gets the actual bound port as return value from `io::publish` (which used to return `void` previously). If the user enters a non-zero port, the passed port shall equal the return value.