Changing protocol
We should make the protocol more verbose, so that all inputs, outputs and errors
will be transmitted together with a `argv` field, instructing how to parse the
`data`, e.g. encoding. And inputs, outputs, errors are going to be handled in and
only in their corresponding fileds located at `lib/io/<inputs|outputs|errors>.js`,
not in anywhere in our program.