Fix: Issue 10520 - [profile+nothrow] Building with profiler results in "is not nothrow" error on some contracts

When Statement#blockExit() checks if the statements may throw or not, it
can also emit compile error.
We turn the second argument of it, mustNotThrow, to false
so that the error is suppressed.
Issue 13001 - Add VRP support for ternary operator ?:
fix Issue 12981 - Can't refer to 'outer' from mixin template
Merge pull request #3698 from lionello/bug13001

Issue 13001 - Add VRP support for ternary operator ?:
fix Issue 13003 - Lack of read-modify-write operation check on shared object field
Merge pull request #3554 from qchikara/FIX_profile_contract_nothrow

Fix: Issue 10520 - [profile+nothrow] Building with profiler results in "...
fix Issue 11471 - [profile+nothrow] `asm` statements rejected in `nothrow` functions if built with "-profile"

Workaround fix is introduced in e6c308938d02d1cbfc57c37c03d06bff0ec00c74, so just add a test case.
Merge pull request #3702 from 9rnsr/fix11471

[REG2.066a] Issue 11471 - [profile+nothrow] `asm` statements rejected in `nothrow` functions if built with "-profile"
Merge pull request #3701 from 9rnsr/fix13003

Issue 13003 - Lack of read-modify-write operation check on shared object field
Merge pull request #3700 from 9rnsr/fix12981

[REG2.008] Issue 12981 - Can't refer to 'outer' from mixin template
Added __traits(valueRange, ..)
Use a stack of IntRange for if-else scopes
Added support for if-else ranges to CTFE
For integer comparisons, ensure the signed-unsigned comparison is safe.

1. If the sizeof(signed type) > sizeof(unsigned type), cast to unsigned to signed
2. If min(signed value) >= 0, cast signed to unsigned
3. If max(unsigned value) < max(unsigned type)/2, cast unsigned to signed-of-same-size
else the comparison is in error.