add in-memory caching using a proxy Solver class that intercepts solver requests
and, if the Souper IR has been seen before, answers with the cached result;
there tend to be a lot of hits when Souper is run as an LLVM pass since we're
called multiple times with very similar code

also some associated refactoring: Pass no longer sees CandidateMapEntries, and
the CandidateMapEntry::getQuery() method is gone with its code moved into a new
BuildQuery() function
Merge pull request #17 from regehr/master

add in-memory caching using a proxy Solver class that intercepts solver ...
canonicalize include file ordering

add Peter's coding style
Souper was crashing when invoked like this:

  souper foo.bc

The problem was that when the solver command line argument was missing, a Solver
object with a NULL BaseSolver was getting created, crashing later on. The fix is
to avoid creating the Solver and just return NULL when we don't have a
BaseSolver.
Merge pull request #18 from regehr/include-cleanup

code style stuff
Merge pull request #19 from regehr/fix-null-crash

fix null pointer crash