Do not specify a signal when terminating a process/thread.

As explained in a comment in the code:
    We have to use SIGKILL here, for two (related) reasons:
    (1) we want to make sure the tracee can't catch the signal when we are
        trying to terminate it;
    (2) using SIGKILL allows us to send the signal with a simple `kill()`
        instead of having to use ptrace(PTRACE_CONT, ...)`.

Also, by removing the notion of signal termination, we can keep a sane
interface for the windows implementation that doesn't have a notion of killing
with a signal.
Handle signal terminations properly in Linux Process.
Properly wait for the inferior when killing it.
Properly handle processes being terminated.

When a process is being terminated, all relevant data is not available
from /proc anymore, we need to be careful as to what we try to gather
from there.
Fix argument parsing bugs in handling of `A` packet.
Add an option to force lldb-compat mode.

This is required when we want to expose some lldb-specific behavior
before we got a chance to detect we were actually talking to an LLDB
remote (e.g.: when running some tests from the lldb test suite).
Allow launch without command line or target pid when in lldb compat mode.

LLDB expects the remote debug server to accept the `A` command (which
sets the program arguments) outside of platform mode, which means we
have to be able to launch the debug server and wait for that command
even when no target program is specified.
Log a message if a packet checksum is invalid.
Add a "fatal" log level, which kills ds2 when used.
Print the "listening" message only in lldb compat mode.

This message is useless otherwise, so get rid of it.
Add build of the fault handler to CMake.
Get rid of constexpr.

This is not supported by MSVC pre-2014.