Adding programName as parameter to functions

The program name can change depending on the name of the executable, so
passing the program name to functins as a parameter.
Adding attribution info to header comment
Using String rather than NSString for printDefinitionFor parameter

Native Swift types are preferred.