taint: C++ STL allocator for tracking memory usage of C++ objects
Enable C++11 in taint-related plugins
taint: Use usage-tracking allocator for taint set
taint: use LabelSet struct in cleaner more C++ish way

First, call LabelSet's constructor and destructor. We use the "placement new"
operator to allow us to keep tracking its allocation in the mymem pool.
Second, repace the Bitset* member with a Bitset, since it can never be null
or shared and we dereference it for every operation. Memory management of the
Bitset object is now handled automatically by LabelSet's ctor an dtor.
taint: allow selectable label-set implementations, adds vector<bool> option

Previously, the storage backend of taint label sets was a std::set, which is a
red/black tree in the GNU STL. This patch
1) Allows the storage type to be swapped out
2) Adds a label set implementation using std::vector<bool> as a backend.
The vector-based label set operations are slower than the std::set version,
but require at least one order of magnitude less memory in our test cases.
taint: std::bitset version of taint backend
syscalls: add PPP interface for registering a callback for the call site
taint: fix panda_stats to use bitset API for enumerating set elements
taint: make vector labelset implementation the default
Merge feature 'std::vector<bool>'-backed taint labelsets into master
Update and check in remainder of ARM hypercall stuff that was hiding in a git
stash.
Merge branch 'taintWIP'
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