Caching

I didn't understand that the Solver was re-instantiated every time LLVM called Souper, so the cache kept getting emptied out. This is fixed and now we get cache hits as expected.
Instead of making these globals, you could move them back to CachingSolver and modify Pass.cpp to hold the reference to the solver in a global.