beam: fix Func to fully implement the Stream interface
beam: DevNull: a convenience stream which discards all messages sent to it
beam: NewReader and NewWriter: wrap any Stream in an io.Reader or io.Writer
beam: new example: 'minirpc', a minimal in-memory rpc engine
beam: NewFile wraps an os.File object in a Stream.
beam: Splice closes both streams upon completion
beam: more tests for Splice and DevNull
beam: improvements to Func

* Func.Send spawns a new goroutine to handle each message
* As a result, Func.Send never fails
* After a new stream is received and processed, it is closed. This can be used for synchronization
* Func.Receive returns io.EOF instead of failing
* A few tests to enforce the above
beam: WrapIO.Send and WrapIO.Receive don't fail if Write and Read are not implemented, respectively
beam: fix Pipe.Send to correctly emulate fd passing
beam: improve example 'minirpc' with handling of stdout and stderr
beam: improve the example 'minirpc' with a basic fork-exec command and working stdout/stderr