Add support for allocatable attributes (Previously: "Switch to preferring allocatable")

The problem

We've used pointers a lot throughout the code. However, the general advice seems to be to use allocatable if you can. We should try doing some switches here and see what chaos ensues.

Definition of "done"

Additional context

General advice which lays out good reasons for preferring allocatable: https://community.intel.com/t5/Intel-Fortran-Compiler/POINTER-vs-ALLOCATABLE/m-p/841083/highlight/true#M59052

!55 (comment 1781152449)

Edited by Zebedee Nicholls