Don't add branch-over edge if pre-conditions are not satisfied

Summary: Currently, we add branch-over edges without checking if the
pre-conditions are satisfied for the target block. Later, if the
ir-builder finds that the block-state is incompatible at the merge-point
because of the branch-over edge, it terminates the main-trace block
in an exit block. Ideally, we should choose the main-trace branch over
the branch-over edge.

This diff changes it so that we check that pre-conditions are
satisfied at the time the branch-over is created, and skips the
branch-over edge if they are not.

Reviewed By: @ottoni

Differential Revision: D1391291
Allow merging FrameStates with different FPs

Summary: Trace through FPs for instructions that do not modify
the actual FramePtr.

Reviewed By: @ottoni

Differential Revision: D1391581