Modified BinaryOperations to remove all of the warnings that clang generates
Replaced char* with std:string* in IndirectPassHeader and IndirectAnalysisUsage

This was done because the char* was going out of scope and wasn't being
persisted. Thus, the internals of each class copy and keep track of them
internally.
Modified the cpp files of IndirectAnalysisUsage and PassHeader to use string*
Added a crash condition if the target pass does not exist when calling optimize