Refactor location, filename, and klabel attributes

**please review**
Again. I don't think File is a good solution. What happens when I send a command line argument?
That has no file representation. The filename should be "Command line argument". If it is generated through the code during one of the stages, it should contain "generated by X"... You should think of `filename` as 'origin'.