Fix the relative path reference resolution

Compiler internally doesn't resolve the file paths to full disk paths unless necessary that results in reference resolution error when reading files that reference each other but aren't in same directory.
Eg. 
src\ts\Manager\FieldManager.ts -- references ..\..\..\typings\tsd.ts
typings\tsd.ts -- reference ..\src\ts\Manager\FieldManager.ts

compiling FieldManager.ts from src\ts\Manager folder results in following reads
FieldManager.ts 
..\..\..\typings\tsd.ts - as it is reference from fieldManager.ts 
src\ts\Manager\FieldManager.ts as a normalized reference from tsd.ts  but compiler doesn't know that this is same file as earlier read FieldManager.ts and ends up adding the text again and hence duplicate symbol errors

Fixed this by adding keeping track of disk resolved path -> SourceFile cache as well apart from just filename -> SourceFile cache when adding sourceFile to cache so if we try to lookup the same file with different relative path name, so we wouldn't end up creating multiple source files for references to the same file through different relative paths

Fixes #1039 
I think we just need to compute an absolute path for every file for comparison purposes regardless of --noresolve, just do not make it the main name of the file so that error messages still use the name the user inputed.