If the file being diffed is new (i.e. it has been added, but not yet committed), create an empty temporary file for the working base file, and show the revision number as "-1". This matches the behaviour observed by TortoiseSVN when showing a diff with TortoiseMerge for new (added only) files.
Added FileHelper.WriteFile().
Added FileErrorRaiser.ThrowFileAlreadyExistsError() and FileErrorRaiser.ThrowFileAlreadyExistsErrorIfFileAlreadyExists().
Handle reading empty files in FileHelper.ReadFile().
Added FileHelper.ReadFile().
Added FileErrorRaiser class.
Added note about potentially using SubWCRev.Revision as a safeguard around calling `svn cat` in TortoiseSvn.Diff().
SubversionCli.GetRevision() and SubversionCli.GetLastChangedRevision() will both return Null if called for paths which have been added but not committed; i.e. they are versioned, in that they are known to the version control system, if only locally, but they do not yet exist in the repository.