ppp: fix apigen to have guards, fix regex, and remove hardcoded sample

Function prototype regex now works with * at the beginning of a function name instead of the end of the type.
ppp working, including both callback reg and auto api gen

Rewrote tstringsearch to use ppp.  So stringsearch has a pluggable point which is when a string matches. tstringsearch registers a function to get called there which paints taint labels onto the matched string.

All of the taint code (almost) is now moved into the taint plugin, including the taint processor.
I have written a very small api to the taint library in taint/taint_int.h which works since I was able
to access it from the tstringsearch plugin.  This compiles and works.

Note: this is only half of the ssh-keygen backdoor demo.  The other half involves querying taint
at network out via a hacked-up version of the syscalls plugin.  That also would need to register
callbacks with the taint plugin (which is now also pluggable at least at load and stores).
I decided not to check in that code since Josh is coming up wiht somethign much better.
should have been part of last commit
Merge https://github.com/moyix/panda
updated apigen script
minor
Compile fixes for linux-user mode
Slight kluge to add Windows 7 64-bit support.

This loop needs to go in the forward direction in order to have
Microsoft's Kernel Patch Protection decrypt itself correctly. Otherwise,
the self-modifying code will try to decrypt itself twice when an XOR
crosses TB boundaries.
Fix broken logic for before_exec_invalidate_opt
syscalls: workaround for bug in GCC 4.7 and below
Add scissors plugin for excising portions of replays.

Plugin makes replays into smaller replays. It currently is not working
entirely correctly - you can't cut a replay into a segment that goes all
the way to the end of the original. It also segfaults at the end, but
that doesn't impair functionality.
savevm: add section lengths to vmstate so we can skip devices

For QEMU, loading a VM state with devices not present in the emulator is a
failure. In PANDA, we have multiple cases where this should *not* be a
failure:
  1. Replay, where we only care about the CPU, RAM, and any devices needed by
  loaded plugins.
  2. Plugin state, which is only relevant for loading a VM for resuming a
  snapshot or replaying execution with that plugin still loaded.

Previously, we have had to ensure the command line for QEMU was the same
during replay as during record, up until the last device we cared about, since
QEMU loads all devices until it finds a mismatch, and then stops loading
devices. Since CPU and RAM are the first devices, this usually meant the
command line simply had to be enough to start QEMU with the correct CPU model
and RAM size.

After this patch, devices in the vmstate that are not present in the emulator
will not cause the snapshot to stop applying at the first missing device, so
the devices of interest are the only ones that need to be specified.
savevm: Use QEMU's v3 vmstate when not saving a recording starting point

Keep compatibility with QEMU for savevm calls that are not used for PANDA's
record/replay functionality.
Correct segfault in scissors plugin and correct warnings.
Add 'name' option to scissors plugin.
Re-static queue_head and queue_tail.
exposed fns that let us access rec rep prog point pc, secondary, and guest_instr_count
added a taint api fn that reports the max observed taint compute number
new plugin taint_compute_numbers spits out pc, guest instr count when max observed taint compute number changes
report which string matches