Improve logging

this cleans up and extends the logging capabilities. the biggest changes are:

- locations (file name and line number) are now stored in DeckKeyword objects
- the ParserKeyword object is retained in DeckKeyword objects. This makes it possible to detect unrecognized keywords
- the log messages are now not mingled into the deck anymore, but transferred to a `ParserLog` class. This allows to use constant pointers to the deck in places like `EclipseState` and still add log messages
- log messages can now assume the types Note, Warning and Error instead of just "Warning" as before

I hope that I did not forget to add any files to the CMakeLists.txt this time (how can I persuade Jenkins to build the branch?). As usual, the series is fully bisectable on my machine.