Caching

cache previously computed results within Souper

this includes some refactoring suggested by Peter to avoid using the CandidateMap from Pass

anyway it was pretty inelegant to repeatedly create the Solver from Pass, this is much nicer

Please keep this sorted in the following order:

    #include "souper/Extractor/Solver.h"

    #include "{klee,llvm,souper}/..." // ordered by name
    #include system headers // ordered by name