Stop double visiting some expressions during self reference checking.

Originally, self reference checking made a double pass over some expressions
to handle reference type checking.  Now, allow HandleValue to also check
reference types, and fallback to Visit for unhandled expressions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@217203 91177308-0d34-0410-b5e6-96231b3b80d8
clang/test/CXX/drs/dr5xx.cpp: Suppress dr547 also for MinGW

This is a follow-up to r216841.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@217204 91177308-0d34-0410-b5e6-96231b3b80d8