# Functions
CheckDir checks whether a directory exists and is in fact a directory (returns an error if that is not the case).
CheckFile checks whether a file exists and is in fact a file (returns an error if that is not the case).
FilterSongs removes all non-songs from the files slice.
IsCanceled returned whether the context is canceled.
IsDir returns true if the path points to an existing directory.
IsFile returns true if the path points to an existing file.
ListAllFiles recursively lists all files in songsDir/subDir.
ListAllSubDirs recursively lists all directories in dir.
ListGlobFiles lists all files in a directory matching the provided glob pattern.
NewMultiError creates a MultiError from a base message and a slice of errors.
# Structs
ErrorCollector is a thread save utility class to collect multiple errors into one slice.
MultiError is an error containing multiple errors.