build: Switch to ax_check_enable_debug.m4

This replaces ENABLE_DEBUG with !NDEBUG.
tests: Enable quiet mode when running the tests

So that extraneous test output does not affect the result matching.
clang-plugin: Switch to using LLVM debug macros

This means that the debug output is slaved to the -debug compiler
option, and will be compiled out if LLVM is compiled without debug
support.
build: Add code coverage support
gir-attributes: Use WARN() macro for warnings
gsignal: Use WARN() macro for warnings
nullability: Use WARN() macro for warnings
clang-plugin: Print help and version on stdout not stderr
gsignal: Fix use of freed memory

getNameAsString() returned into a temporary which was freed as soon as
the call was finished, since it was never assigned to a local in
_func_is_gsignal_connect(). Use the std::string instead of messing
around with C strings.

Coverity issue: #14497
gvariant: Fix use of freed memory

getNameAsString() returned into a temporary which was freed as soon as
the call was finished, since it was never assigned to a local in
_func_uses_gvariant_format(). Use the std::string instead of messing
around with C strings.

Coverity issue: #14496
debug: Only use the Remark output level for LLVM > 3.4

It was introduced after the 3.4 release. For older releases, use
Warning, as that is what Remark normally maps to anyway.
gsignal: Correctly handle subtyping of GObject interfaces

The code previously ignored interface prerequisites, which effectively
allow an interface to be a subtype of an object.
gsignal: Fix callback instance type checking for supertypes

Previously, Tartan would enforce the type relationship:
    actual <: static
but this was wrong, as then the callback could legitimately be invoked
with an instance of type T, where:
    actual <: T  and  T <: static
and it could proceed to call methods defined on actual which are not
defined on T, and crash.

Instead, the following relationship has to hold:
    static <: actual
which guarantees that for any T passed to the callback, since we have to
have T <: static, we definitely also have T <: actual, which is the
necessary condition for type safety of function parameters on
invocation.

Additionally, check whether
    static = actual
and emit a remark if that relationship does not hold, as the callback is
most likely performing unnecessary and inefficient dynamic type checks
in this case.