Use 'auto const&' for iterators whose deref operator return a const var

This patch fixes PR15601.
- Added check for whether the loop variable and the initializer have the same
type.
- Added tests.


git-svn-id: https://llvm.org/svn/llvm-project/clang-tools-extra/trunk@181528 91177308-0d34-0410-b5e6-96231b3b80d8