make Pass hold a reference to the Solver in a global so that its
cache sticks around for the whole execution of Souper

call PrintReplacement instead of print to avoid crashing
refactor so that CandidateMap isn't used from Pass any more