(Binary Analysis) More work on the binary instruction semantics redesign

* Added register read/write to BaseSemantics

* Combined various exception classes

(cherry picked from commit 4e4ebfdfa780a0e53b22cf24fd51b33a5d4ffa67)
(Binary Analysis) Instruction semantics optimizations

Register descriptors are cached in the dispatcher.  This replicates
the same optimization from the old design.

(cherry picked from commit 712db064fcf94b4c2089bebd9c922e670a6015da)
(Binary Analysis) Using custom-smart pointers for semantic values

Using or own custom implementation of boost::shared_ptr gives
a 38% increase in speed.

(cherry picked from commit c9931a0ccedfc384d55458f69d0a1af41d3a69df)
(Binary Analysis) Optimizations for binary instruction semantics

* Added a custom allocator for semantic values.  This increases
  the speed by about 30%.

(cherry picked from commit 12149a22bdab3e1a621b6de8831ae210e65029fb)
(Binary Analysis) More optimizations for instruction semantics

* Hand-inlining of Allocator::which_freelist() results in 3%
  improvement

(cherry picked from commit 0042a9060232169d560d1b093cc4b959ca28f71f)
(Binary Analysis) Optimizations for instructions semantics

* Move EIP update from base class to DispatcherX86 where it should
  have been in the first place. Improved speed by 20%.

(cherry picked from commit 6384bab75fd83294e230f2e821544c0e22c45b51)
(Binary Analysis) More work on the new binary instruction semantics API

* Performance improvements
* More documentation
* SymbolicSemantics converted to new API

(cherry picked from commit 93ff559f8f1adc0226be61939e59ad790fed84f7)
(Binary Analysis) Performance testing for new binary instruction semantics API

(cherry picked from commit 3bfb2ad44cfc4763d90ae3f8def8dffb0fde0423)
(Binary Analysis) Added more documentation for the new instruction semantics API

(cherry picked from commit 711779a23aab06f530f302c3eabcdac46931f79c)
(Binary Analysis) More documentation for symbolic def-use

(cherry picked from commit b2ca69463f6df23a88853b7b5f4188e0712029fb)
(Binary Analysis) Moved some function definitions for SymbolicSemantics

A few class methods that are more than a couple lines and not on a hot
path have been moved from the header file into a .C file.

(cherry picked from commit dc5f9ce5492f264ff8f6e9c12ff3d3fa9768c1cc)
(Binary Analysis) Moved IntervalSemantics to the new API

(cherry picked from commit 69900cb45e2a0d47375201152df98aa77b7ffea8)
(Binary Clone Detection) Syntactic detection saves virtual addresses

We need to save the virtual address for each function in order to
be able to compare syntactic output with semantic output.
(Sqlite3) Added additional bind() functions.

sqlite3x.h was missing prototypes for bind() taking unsigned
values, and the signed arg promotion was ambiguous. Rather than
adding casts all over my code (which uses unsigned values almost
exclusively), I added some new prototypes.
(Binary Clone Detection) Changed the semantic schema a little

This is in preparation for combining semantic and syntactic
clone detection.
(Binary Clone Detection) Program to combine syntactic and semantic results
(SageBuilder) Moved a function template to a header file

"gcc -O3" had undefined references when linking because it
didn't instantiate the function template when it was used.
Moving the template definition to a header file solves the
problem.
(Binary Analysis) Added a MultiSemantics domain to the new API
(Binary Analysis) Reconfigured semantic tests in preparation for new API
(Binary Analysis) Changed output format for PartialSymbolicSemantics

The old API output format changed so that, like the other semantic
domains, it indicates the width of the ValueType being printed.