VerifyRetTypeC optimizations for repo-mode

Summary: This diff adds a new compiler option HardReturnTypeHints, which controls
whether normal execution is allowed to resume after a non-soft return type
constraint fails, plus a corresponding mode for the CheckReturnTypeHints
runtime option.

Next, this diff improves HHBBC's handling of the VerifyRetTypeC instruction
in two ways. First, HHBBC will now convert VerifyRetTypeC to a no-op when
possible (i.e. when the input is known to be a subtype of the constraint's
type). Second, when the constraint is not soft and when HardReturnTypeHints
is true, HHBBC's type inference will now takes advantage of the fact that
VerifyRetTypeC's output is guaranteed to be subtype of the constraint's
type.

Reviewed By: @jdelong

Differential Revision: D1669375