nient for
implementing phase 1 of construction. Note also the <code>constexpr</code> constructor,
which thanks to the default member initialisers is otherwise empty.</p>

<p>File handles are very expensive to copy as they involve a syscall to duplicate
the file descriptor, so we enable moves only.</p>

<p>The destructor closes the file descriptor if it is not -1, and if the close
fails, seeing as there is nothing else we can do without leaking the file
descriptor, we fatal exit the process.</p>

<p>Finally 