CopyDir copies a directory.
CopyFile copies a file.
NewMultiWriteCloser creates a new io.WriteCloser that duplicates its writes to all the provided writers.
ToReadCloser creates an io.ReadCloser from the given io.Reader. If it's not already, one will be created with a Close method that does nothing.
ToWriteCloser creates an io.WriteCloser from the given io.Writer. If it's not already, one will be created with a Close method that does nothing.
ReadSeekCloser is implemented by afero.File. We use this as the common type for content in Resource objects, even for strings.
ReadSeeker wraps io.Reader and io.Seeker.
ReadSeekerNoOpCloser implements ReadSeekCloser by doing nothing in Close. TODO(bep) rename this and similar to ReadSeekerNopCloser, naming used in stdlib, which kind of makes sense.
NewReadSeekerNoOpCloser creates a new ReadSeekerNoOpCloser with the given ReadSeeker.
NewReadSeekerNoOpCloserFromString uses strings.NewReader to create a new ReadSeekerNoOpCloser from the given string.
Close does nothing.