Use more standard CFG analysis.

This approach is more disciplined than the previous, SCC-based, one.
Still it has to be tried to see if it works in more situations as it
should.
Fixing usage of dyn_cast to use dyn_cast_or_null.

We want to check that the instruction actually exists.
Removing iterator invalidation bug.

Removal now uses an operation which returns the updated iterator.
This lets us remove elements in the body of the loop.
Fix the predecessor checker.

It was broken for entry, where there are no predecessors.
Setup to use AliasAnalysis dependency.

It doesn't use the dependency yet, but it's setup to use it in the future.
Removing unused #includes.
Removing unused template functions.
Incorporates alias information now.

The previous version would produce incorrect results if two processors
would be aliased. This should alleviate that problem.
Expanding use of alias analysis.

It is now used to eliminate more syncs (if possible), and we now do
coalescing as well within blocks because it's just as easy.

There's still some repetition between the analysis and the trimming,
but it seems somewhat unavoidable?
This test exercises various lifting properties.

It tests lifts and aliasing, and basic usage.
Cleaning LiftSync.cpp.

Removing unused functions and variables.
Cutting a few more imports.
Lifting out some functions to make code clearer.

This also eliminates a redundancy between the analysis and modification
passes. There is still some high-level duplication but C++ isn't so
natural to do more ``interesting'' higher-order programming.
Removing _or_null.

It was only necessary due to an unrelated bug, and I think it is probably
better that we use stricter functions until we know we may actually need
to worry about "null" instructions.
Removing a call from the test case.

We don't want to worry about the call or now (there are other tests
with calls that will cover this case).
Creating function that modifies synced for a CallInst.

CallInsts may have interesting behaviour in the future based on their
function attributes or their metadata (perhaps).
`readonly' or `readnone' calls don't invalidate sync-set.
Adding individual tests, and testing setup.
Adding CMake for out of source pass building.
Removign old C-based test file.