Removed Main.java, it is not needed anymore.
Added a Parser Factory to create an instance of the ANTLR parser, so the specific parser implementation doesn't seep through.
Moved the parsing and semantic analysis of the form to a new class.
Renamed the typechecker to semantic analyser because it captures its purpose better.
Replaced \n by System.lineSeparator().
Replaced the HashMap in the InterpreterVisitor with a LinkedHashMap to retain the order in which the values are inserted.
Added a serializer to serialize form values to the csv format.
Added a TimeSource interface so the current time can be retrieved but the time can also be mocked in the tests.
Abstracted the way a filename is build.
Created a value serializer for the csv format.
Added a visitor to retrieve the file extension for a specific form of serialisation.
Implemented a persister to persist to a file.
Tied the Controller and the persister together.