Refactored

Make some changes to Controller that simplify it and move some responsibilities out to FHX2File and related classes. Also add some comments. Unfortunately the diff on FHX2FileOptional got all messed up due to technical difficulties (laptops are dumb).