Split `fgen.models`

The problem

fgen.models has too much stuff in it. It should be split to make clearer what is going on.

Definition of "done"

  • #51 (closed)
  • #53 (closed)
  • split out fgen.models into smaller files so it's easier to navigate
  • split out fgen.models.serialisation so the data models code is separate from the serialisation code

Additional context

First draft happened in !63 (closed)