more refactoring of dt
Merge pull request #1612 from WalterBright/refactor11

more refactoring of dt
xtest46: Don't use overlapping array operation.

In this specific case, there is little reason for it not to work,
but druntime checks for overlapping operands in its in contract
anyway.

Fixes the test suite build in debug mode.
remove STRUCTTHISREF
Merge pull request #1617 from WalterBright/refactor12

remove STRUCTTHISREF
Fix master breakage.
remove SARRAYVALUE
Merge pull request #1619 from WalterBright/refactor13

remove SARRAYVALUE
Merge pull request #1618 from AndrejMitrovic/FixMasterBreak

Fix master breakage.
Merge pull request #1470 from klickverbot/xtest46-array-overlap

xtestt46: Don't use overlapping array operation.
Revert 9rnsr/fix9230 and 9rnsr/fix8408

- Revert "Merge pull request #1418 from 9rnsr/fix9230"

  This reverts commit c42d35bcf92cd26c2b83c3d2e5fc21e5a0f2d296, reversing
  changes made to 9f2d9eafacd75c22ea7a705151ee2a8e20a1638c.

- Revert "Merge pull request #1110 from 9rnsr/fix8408"

  This reverts commit b6a809346a43c7fbf350bd4181d350dd9b2cd4e6, reversing
  changes made to 3b061322300c5b7a39f1b5c5f76016a4d9906899.
Remove unused code which will never be activated
fix Issue 8998 - 'inout pure' returns immutable, which in reality is mutable

By fixing issue 7769 (relax inout rule), we cannot assume a function with inout parameters as PUREstrong, because the return type may not have any inout indirections.
Separate returned value isolation check from purity level calculation