Fixes a segmentation fault caused by an uninitialized set
No more segfaults and parameters seem to be passed to backwards() correctly
Traversing the predecessor list better now
set generation now seems to be working
Removal of redudant instructions

Doesn't check for subsumed, just identical.
I'm not sure where busy checks come into play yet...
The beginning of filtering out comparisons based on inc/dec values
Basic tracking of whether a store instruction's value is an increase, decreases, or unknown.
Store the variable changes into a map for each BasicBlock
Iterates through instructions to find the underlying value of an operand

We look past the bitcasts to look for load instructions
Close to getting upward movement of compares working.

Still needs to remove redundant intra-block references
Removes duplicate instructions from the same block
Some code that should clean up empty blocks, and only consider variable matches in the first operand of a compare
Creates one error block that all bounds checks will point to
Merge branch 'GavinBranch'
Commits the test file I've been using