This adds a Meson build system which should be functionally equivalent
to the existing Autotools build system, but easier to deal with and
./configure -> meson _build
make -j5 -> ninja -C _build
make install -> ninja -C _build install
make check -> meson test -C _build
It's also easy to run the tests under Valgrind or using the GC zeal
variables, by adding e.g. --setup=valgrind to the meson test command.
Dependencies (except SpiderMonkey) will be downloaded and built if not
present (or not new enough), using Meson's wrap system.
There were a small number of things the Autotools build did better. One
is export-symbols-regex which doesn't exist in Meson; we must write two
separate linker config files for GNU ld and macOS's linker, and I'm not
sure what happens in this case on Windows.
The other thing is merging the JS and C code coverage files
automatically. Since this isn't possible using Meson's b_coverage
option, we add a script, tools/run_coverage.sh, which generates a code
coverage report from start to finish. This is actually kind of better
than the old situation, since the script builds in a different build
tree, so you cannot accidentally leave coverage-instrumented build
artifacts sitting in your build tree.