Rejigger the CEP interpreter so that debug() doesn't ever call into
libc, since that seems to be causing problems with the double free
detector.
Switch from a simple spin lock to a fair spin lock.  This seems to make
the many-thread test complete quite a bit faster.
Implement a private malloc() for the CEP interpreter, so that I don't
need to call into the libc one, because that seems to have interesting
interactions with the double-free detector.
Add a load of extra sanity checking to the new allocator.
Clean up namespace pollution a little.
Reduce code duplication a little bit.
Rework the way the CEP interpreter handles calls into library
functions.  They no longer cause enforcement to stop dead, which is
handy.
Drop the big lock during a native call.  This should be safe, because
the thread which does the call doesn't touch any of our data while
it's doing the call, and should marginally reduce the risk of
deadlocks during enforcement.
When enforce double-free bugs, make sure that the sequence

free(p);
q = malloc();
free(q);

doesn't count as a double-free just because p == q.
Make sure that we do the right thing if one machine fragment ends at
precisely the point that another one starts.  Previously, we were
skipping the second fragment, which made a lot of bugs more difficult
to reproduce.
Tweak bug14 so that without an enforcer it runs for a useful amount of
time, so that we can actually see whether the enforcer is working.
Merge github.com:sos22/SLI

Conflicts:
	sli/enforce_crash/cep_interpreter.c
Merge github.com:sos22/SLI