SourceFile normalizes filename and parent_dir

It now figures out parent_dir (if not explicitly given), and
filename is always a filename with no path in it. full_filename added,
which returns the full filename with path.