cleanups, and allow nullptr_t for BinaryInput/Output/Stream and used in ProcessRunner defaults