refactoring: file scanning
refactoring: arrays of file extensions
refactored common functions
refactoring: logging
use wchar_t for output and log file paths on Windows
Exclude the files specified by -o and -l from processing
added automatic test