1. Capture errors when listing directory contents and report them
as part of the response instead of exiting on first error
2. Refactor DirRead request to support providing a depth (instead
of the "all" flag), canonicalizing the paths, and have the choice
of returning absolute paths instead of relative
3. Fix forked process for launch not connecting over TCP to
server due to tokio runtime being inherited from parent
4. Fix leftover launch process caused by forking w/ the old runtime
5. Fix stdout/stderr of running processes not being reported
(when process looping and not returning) by wrapping stdout/stderr
in `BufReader` and sending back one line at a time for each
6. Refactor ProcStdout and ProcStderr responses to send back a line
field that is a string instead of a data field that is a byte vec
as we are now reading and sending back whole lines, which makes
more sense and aligns with output flushing and common stdout/stderr
processing by other programs
1. Add --session argument to launch and action
subcommands that accepts file or pipe for
launch and environment, file, or pipe for action
2. Unify session string as "DISTANT DATA <host> <port> <auth key>"
3. Rename utils to session
4. Split out Session file functionality to SessionFile
5. Remove SessionError in favor of io::Error
6. Bump version to 0.4.0 in preparation for that release