beam: replace SendPair() with the simpler SendConn()
WIP sendconn
beam/examples/beamsh: cosmetic fix in Fatalf
beam/examples/beamsh: commands are messages. Commands in the pipeline should either implement or pass-through command messages
beam/examples/beamsh: 'prompt' asks the user for a value and sends it
beam/examples/beamsh: rename 'log' to 'logger' to avoid conflict with stdout/stderr
beam/examples/beamsh: fix 'print' to be pass-through
beam/examples/beamsh: add scripts to reproduce various bugs
beam: unit test for SendConn
beam: Fix double close of fds in SendUnix

Instead of calling syscall.Close() on the fds in sendUnix() we call
Close() on the *os.File in Send(). Otherwise the fd will be closed, but
the *os.File will continue to live, and when it is finalized the
fd will be closed (which by then may be reused and can be anything).

This also adds a note to Send() the the file is closed.

Docker-DCO-1.1-Signed-off-by: Alexander Larsson <alexl@redhat.com> (github: alexlarsson)
beam: Add more tests to unix_test.go

These are failing, and indicate things that need to be fixed.

Docker-DCO-1.1-Signed-off-by: Alexander Larsson <alexl@redhat.com> (github: alexlarsson)
beam: Add simple framing system for UnixConn

This is needed for Send/Recieve to correctly handle borders between
the messages.

The framing uses a single 32bit uint32 length for each frame, of which
the high bit is used to indicate whether the message contains a file
descriptor or not. This is enough to separate out each message sent
and to decide to which message each file descriptors belongs, even
though multiple Sends may be coalesced into a single read, and/or one
Send can be split into multiple writes.

Docker-DCO-1.1-Signed-off-by: Alexander Larsson <alexl@redhat.com> (github: alexlarsson)