Issue 7437,7980,8053 - Partial fix for stack overflow with recursive alias this

<a href="http://d.puremagic.com/issues/show_bug.cgi?id=7437">Issue 7437</a> - DMD enters infinite loop during overload resolution
<a href="http://d.puremagic.com/issues/show_bug.cgi?id=7980">Issue 7980</a> - Stack overflow / recursive expansion with alias this
<a href="http://d.puremagic.com/issues/show_bug.cgi?id=8053">Issue 8053</a> - Recursive alias this causes infinite loop

Compiler should detect recursive alias this dependencies and avoid stack overflow / infinite loop.

This pull request is not complete (there is still problems around CastExp and castTo), but able to detect many cases.