Make guard relaxation work with unreachable code

Summary: Guard relaxation was relying on the simplifier + preoptimizer during
IR generation to eliminate unreachable code due to type-checks that
will always fail.  Such dependence is undesirable, and there are
special cases where the simplifier + preoptimizer aren't able to
eliminate unreachable code anyway.  This diff makes guard relaxation
more robust, so that it doesn't crash in such cases.

Reviewed By: @edwinsmith

Differential Revision: D1551777
mark checkCalls DEBUG_ONLY to appease -Wunused

Reviewed By: @oyamauchi

Differential Revision: D1552578