Implemented analysis to infer func-pointer targets

Added a new analysis to infer function pointer targets. It can be
enabled using the -soaap-infer-fp-targets flag. To display a list of
the inferred targets, use -soaap-list-fp-targets. It works by tracking
(interprocedurally) the assignment of functions. This analysis can
be used in conjuction with annotated fp targets. So for example, you
could use the inference algorithm by default and annotate those function
pointers for which you know more precise (i.e. less conservative)
information.

Few software engineery changes - Split declarations for the SoaapPass
class into a separate header file and moved command line options to
their own class. Command line options are now stored as static fields
of a class, thanks to the external storage support in llvm's command
line API (see
http://llvm.org/docs/CommandLine.html#internal-vs-external-storage).

Fixed a bug in SOAAP CallGraphUtils whereby we were not checking the
correct condition for when a CallInst is a function-pointer call. We
were checking for whether getCalledFunction() == NULL but this is not
correct. The correct condition is:

getCalledFunction() == NULL
  && !isa<Function>(getCalledValue()->stripPointerCasts())