We also need to switch out the `ldc-bootstrap` D compiler from the deb
package in 16.04 to a more up to date `build-snap`, as the frontend no
longer builds with v0.17.1 (!).
Rework ldc-bootstrap to use the same compiler version as the release
LDC v1.12.0+ supports LLVM 7, but v0.17.6 does not. This means that to
build more recent LDC releases with the latest LLVM we will either need
to build multiple LLVMs (!) or change the bootstrap compiler.
This patch therefore implements a technique already used by upstream LDC
package builds: the bootstrap compiler is the same version as the one to
be released, built with minimal features using the host system's LDC but
the latest LLVM. This means that we can take advantage of the most up
to date compiler features when building the final release.
Note that an alternative would be to use `build-snaps` for the LDC used
to build `ldc-bootstrap`. This is avoided for now since avoiding having
any snap-package dependencies should make it easier to build the package
on a wider variety of systems.
One consequence of this change is that we need to use an override-build
to ensure that we use Ninja as the cmake build backend, as we already do
for the main LDC build.