Generalized FileIO

Static calls can now be made (checked during implementation, not in
back-end), and now FileIO uses Maps generated from the header of the CSV
file being read to read the correct elements into each Student object.

Will be made more robust later on