Collect changed files by comparing file checksums, instead of simply comparing file last write time

Git/svn switch operation will affect file last write time even if file content is not changed.
So it's almost not usable if we simply collect changed files by comparing file last write time.
Add an in memory file system (IFile and IDirectory) implementation for testing purpose
Unit testing FileChangeCollector
Misc UI improvements and bug fixes around project and release creation