Brought Linux version up to date with Windows version.

This mostly consisted of creating a Linux version of the Path class.
I've also created read_configuration_files for Linux, although at this
stage the configuration system is still basically untested.
Trying to replace stack allocation test with a better one.

I've made a number of small fixes. The C backend should now correctly
handle PHI nodes which use their own values during loops (two values
must exist for each PHI node, one is used purely for assignment before a
jump and then copied to a temporary). I've also added syntax to the
assembler for integer comparisons (slightly surprised I hadn't done
this).

I now need to get aggregate lowering to generate freea operations if the
user has omitted them, so the LLVM backend can easily generate
stackrestore operations.
Got looping stack allocation working in LLVM.

Aggregate lowering now inserts a freea instruction for every alloca or
alloca_const instruction, so LLVM (and the C backend) can free allocated
storage without tracking it themselves.

The test passed with GCC already owing to C99 freeing variable length
arrays at the end of their scope. TCC still fails this test for the same
reason; it does not (yet) implement this correctly.