add support for profiling souper optimizations

increment a redis variable any time optimized code executes
I don't think this will work correctly if linking more than one translation unit. I think there needs to be some kind of registration mechanism.

What I would suggest is to have each optimization represented as a global in the object file. The global would be an element of a linked list built by a registration function in the runtime library (see ```llvm::appendToGlobalCtors``` for a way to arrange the call to the registration function). That way, logging that the optimized IR has been reached could be easily implemented in a thread safe manner with an atomic increment of a count in the optimization global.