Package fifo implements functions to create and open a fifo for inter-process
communication in an OS agnostic way. A few assumptions should be made when
using this package. First, New() must always be called before Open(). Second
Open() returns an io.ReadWriteCloser that is only connected with the
io.ReadWriteCloser returned from New().
CreateAndRead creates a fifo at the given path, and returns an open function for reading.
For compatibility with windows, the fifo must not exist already.
It returns a reader open function that may block until a writer opens
so it's advised to run it in a goroutine different from reader goroutine