Implement -Wcast-qual, fixing #13772.

Many thanks to dblaikie for his advices and suggestions!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@222568 91177308-0d34-0410-b5e6-96231b3b80d8
Sema: Don't permit variably modified types in typeid

GCC and ICC both reject this and the 'Runtime-sized arrays with
automatic storage duration' (N3639) paper forbade this as well.
Previously, we would crash on our way to mangling.

This fixes PR21632.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@222569 91177308-0d34-0410-b5e6-96231b3b80d8
Objective-C ARC. Fixes a crash when checking for 'weak' propery 
whose base is not an expression. rdar://19053620



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