Fix bug in LogReader which would duplicate lines

* Improve and fix code for `update()` method:
  * Replace iterator-`while`-loops with `for`-loops
  * Move adding of new lines to `log` outside of inner loop. This would
    previously add new lines multiple times if there was more than one
    item in `forbiddenKeys`
* Inline some variables in `readFile()` to improve code readability
* Make `line` attribute private and initialize it explicitly
* Move `ArrayList` initialization to attribute declaration
Add superclass for file choosers