Implement deck keyword lists

This series separates internal keyword names from names encountered in decks. Internal names are now always valid c++ names (i.e. they start with a letter, followed by an arbitrary number of letters, digits or underscores), while deck names adhere to all atrocities mandated by Eclipse (i.e., maximum 8 characters, all uppercase, '+'. '-' and '#' allowed but no underscores).

Then, this series adds the possibility to specify a list of deck names which should be match to the keyword and finally uses this new functionality for the well output specifiers as well as for the MULT[XYZ]-? keywords.

thanks a lot @joakim-hove for doing the vast majority of this patch together. All remaining issues are exclusively my own fault...
It also makes the module produce more diagnostic messages during the code generation stage, so that the files which get ignored and the ones where the file name does not match the JSON 'name' item are printed.