The partial order on the domain for reaching definitions now follows the natural definition of set inclusion
Actual return typing constraints are now constructed from the post condition abstract value of the return rather than the precondition of the target block. This prevents the return abstract value from being merged with other block predecessors which may not match the type for the returned value if the returned value isnt actually used in the target block.
This PR contains two major bugfixes: