`split-sections` makes the number of sections in object files much larger.
As you'd expect this also makes the number of sections in the GHCi
object files we make much much larger. The normal object file on
Windows has a limit of `2^16` sections that can be in an object-file.
The `big-obj` format raises this to `2^32` sections. This allows us to
safely stay within the margin.
The implementation is made difficult because we now need to support
two header formats and two section formats that differ only by a single
element size within each. The element that's different is in the middle
of the structs and since the structs are used to map regions of memory
directly, it means we need to know which struct it is when we do the
mapping or pointer arithmetics.