Pure newSourceFile

Now IO won't occur until parse
Tidied up SourceFile
Swiched to whitespace do blocks for parse
Merge pull request #18 from maxpow4h/pure-sourcefile

Pure newSourceFile for Clang