Replace temporary files with in-memory string reader

Windows `tmpfile()` cannot handle large amounts of created temporary
files, so we use in-memory string reader from Penlight as a temporary
storage. This should definitely fix long-running operations on Windows.
Fix remaining cases of os.tmpname and git.util.tmpfile
fix: util.join_path is 'nil'
Merge pull request #14 from mnicky/patch-1

fix: util.join_path is 'nil'