This fixes a problem where dummy arguments that already had more than 8
possible values in their set (because the dummy argument is used in a
greater or less than condition) were not removed, as we'd replace the
IntValue with an unknown value when two branches (where the dummy
argument is not modified) are merged back together.
It should also improve performance, as we'll be doing less memory
allocation.
This is for several reasons:
* It makes building the main OpenRS2 repository easier, as it no longer
requires a C compiler.
* Pre-built versions for all platforms will be available in the Maven
repository. Many versions might not have access to build environments
for all of the supported operating systems and architectures.
* The bundler module should be able to depend on the pre-built versions
in the Maven repository. The Maven reactor isn't quite clever enough
for this to work, especially when depending on .nar artifacts with a
different operating system or architecture.
This is to make cross-compiling for i386 on amd64 easier, by adding
-m32/64 or -arch flags where appropriate.
This commit also adds a gcc linker on Linux and macOS, replacing the
default g++ linker. It's roughly equivalent, but means the shared
library has fewer dependencies (e.g. it doesn't link against libstdc++).