Refactor location, filename, and klabel attributes

**please review**
Filename is a file in order to strongly type it. A filename should be the name of a file.

If you like, I can add a third field however:
```
enum Source {
FILE,
COMMAND_LINE
}

Then we would make an assertion fail if you specified an incorrect combination of Source and filename.

Does this meet your approva?