Starts to define general file layout

Going for a modular approach this is the start of grouping functionality into separate files.
Fixes the requires in Flat::FIle
Moves flat_spec to spec/lib; Adds nonsense comments to Flat to ensure Guard is working