(Clone Detection) 25-run-tests updates history at checkpoints
(Clone Detection) Updated specimens compiled with -g
(Clone Detection) Turned of SQL for avoiding global variables
(Config) Added --with-sqlite3 and DWARF support to Robb's config
(Binary Analysis) Special handling for PE dynamic linking thunks

New code to handle PE dynamic linking thunks that are emitted
to the .text section.  They're also given names if possible.

(cherry picked from commit 027dedb33e89a739876b47168a73983024425565 from edg3x repo)
(Binary Analysis) Pattern matching for function prologue bytes

We had pattern matching based on instructions so we could find the
"push ebp; mov ebp, esp" function prologue sequence, but that only
worked if the disassembler had already created those instructions.

This commit adds a memory traversal that looks for the byte sequence
0x55, 0x8b, 0xec, which is the i386 encoding for those instructions
and which works regardless of whether the instructions have been
created.

(cherry picked from commit a7d348c3dd7c885d09bddf056aa6a236d54756a4 from edg3x repo)
(Clone Detection) Added --dry-run switch to 25-run-tests
(Clone Detection) Avoid division by zero for Jaccard index

By definition, the Jaccard index of two empty sets is 1.0.
(Clone Detection) Fixed usage info for 35-clusters-from-pairs
(Clone Detection) added minimum Jaccard
(Clone Detection) test initialization doesn't cause registers to be written

This fixes the problem where a function that does not write to EAX
was still producing EAX's value as a test output.
(Clone Detection) Writing to through the ss register does not produce an output
(Clone Detection) Added --function filter to tool that gets list of pending tests
(Clone Detection) More info stored for disassembly faults
(Support) Changed parameters for LinearCongruentialGenerator

Knuth's parameters had a period of only four for the low order
two bits.  The new pameters are from java.util.Random, but we
advance the generator three at a time and only use the bits
from the middle to obtain a 64-bit return value.
(Support) Added Damerau-Levenshtein edit distance template function

Function operates over std::vector<T> for any T that has operator==.
(Clone Detection) Outputs are a cross between a set and a vector

Storing all output values as a vector in address order was created
too much data and took too long.  Storing output values as sets lost
too much information about their relative order in memory.  The compromise
is to store each value only once (as in a set) but order them according
to the lowest output address at which that value appeared (like a vector).
(Clone Detection) Similarity calculator can use edit distance

Output group algorithms are now:
   * full output group equality (values and order)
   * partial output equality (same values, different order)
   * Jaccard index computed over output value sets
   * Damerau-Levenshtein edit distance as a inverse ratio to vector size

Aggregation of output is:
   * minimum
   * maximum
   * average

With or without including outputs from failed tests.

So 24 combinations in all, not count the ability to randomly sample
the output groups corresponding to an input group collection.
(Clone Detection) Able to list traces across multiple functions
(Clone Detection) Namespace is clone detection tests is optional

Also now able to link each compiler optimization into its own
executable rather than placing them all in a single executable.