Closes #15 - Use System.IO.Abstractions for file system operations