Test for select generation for conditional returns.

For example rewrites a simpled diamond pattern e.g.:
             If [ Condition ]
               /          \
     false branch        true branch
               \          /
     Return Phi[FalseValue, TrueValue]

to:
     true branch
     false branch
     return Select [FalseValue, TrueValue, Condition]

It tests:
* Simple diamond pattern with:
  * Same value on each branch
  * Different value
* Double diamond pattern (i.e. nested simple diamonds) with:
  * Same value
  * All different values
  * Same value in some cases but not all

For all cases it tests:
* Branches merging with a Phi.
* Branches returning instead of having a Phi.