syscalls: add PPP interface for registering a callback for the call site
syscalls: add default ctor for syscalls::string
syscalls: move calc_retaddr to syscalls header
syscalls: fix typo in autogenerated code for x86
syscalls: fix merge error: don't return before we've saved our "this" pointer

This was a merge error. The plugin init returned before setting
syscalls_plugin_self, which caused the fork tracker in fdtracker to fail
to register its returned-from-fork callback, and thus fail to track
forks.
syscalls: fdtracker: fix incorrect call_clone_callback definition

This means we were missing all the clones in the guest.
syscalls: add PPP callbacks for sysrets

Replace the default weakly-linked syscall handlers with weakly-linked handlers
that check if there are any PPP callbacks for the return point of the syscall.
If there are, they save all the syscall's arguments to a struct which will be
passed to a function that calls the PPP callbacks at the return point.

The default callbacks are #included into syscalls.cpp because it uses PPP
macros, which generate and access arrays, and there's no way yet to generate
extern definitions of them in other files (ie. in default_callbacks.cpp)

If any of these default handlers is overridden, the PPP sysret callback for
that syscall will no longer be called. Since the PPP structures are only
accessible from syscalls.cpp, and the autogenerated callbacks already exist in
syscalls.cpp, an override that preserves PPP functionality must be done by
manually changing the autogerated callback definitions.
This commit comments out override callbacks that existed in sycalls.cpp
syscalls: replace the weak-linkage callback override mechanism with vectors

Completely remove weak linkage. The default callback that runs PPP sysret
callbacks cannot be overridden. It now also calls any C++ callbacks in a
per-syscall list. The default callbacks now exist in the syscalls namespace,
along with functions to register callbacks for each system call. Calling the
registration function means the compiler will type-check the callback
function, causing a compiler error if there is a mismatch. Previously, the
weak linkage model would cause the callback to silently not override the
default callback. Additionally, if the callback is declared static, forgetting
to register it will cause a compiler warning about an unused function,
assuming it's not used somewhere else.

The callback overrides for syscall VMI functions (ON_FORK_RETURN, etc.) are
now re-enabled, including fixing their argument types. Overrides in the
fdtracker are ported over to the new registration system.
Merge feature branch: PPP in syscalls for syscall and sysret events