Added more tests
Added an option to dump dynamic aliases
Turn on c++0x

simplified some code using auto and foreach
Fixed an issue in computing dynaa

Do not at once remove a pointer definition when it is outdated. Outdated
pointer definitions are still useful for some time. Consider the example
in TestCall.ll:

p = ...
foo()
q = ...

We need to capture dynamic aliases between q and definitions in foo.
Therefore, we changed our algorithm to be: upon a return record, remove
all outdated pointer definitions in the callee. Doing so efficiently
requires another auxiliary data structure OutdatedContexts, and requires
MemoryHooks to record the callee's function ID in a ReturnRecord.