[Refactoring] Remove dead code in ForeachStatement::semantic
fix Issue 12932 - Support @nogc for immediately iterated array literal
Merge pull request #3673 from 9rnsr/fix12932

Issue 12932 - Support @nogc for immediately iterated array literal
fix Issue 12934 - Strange newly implemented VRP behavior on foreach
Merge pull request #3674 from 9rnsr/fix12934

Issue 12934 - Strange newly implemented VRP behavior on foreach
Issue 12928 - Range check dropped for array[length]
Merge pull request #3671 from lionello/bug12928

Issue 12928 - Range check dropped for array[length]
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.
Removing unused function isdisjoint
For integer comparisons, ensure the signed-unsigned comparison is safe.

Removed case 3, since -1 might also mean ~0 in which case the result of
the comparison differs for unsigned vs signed.
Fix issue 259 Comparing signed to unsigned does not generate an error

Issue a deprecation warning, since an error causes template instantiations
to fail silently.
Fix issue 259 Check the range of the signed operand after optimization
Added check for cast to bigger signed type
Renamed local variables for more clarity
Added test cases for signed/unsigned comparisons
Added one more test case for backwards compat: 2>-1
Fixed build errors in expression.c
Require deprecation as error flags for bug259.d
More useful error message
Added support for AssignExp and CondExp to IntRange visitor