Revert Decl's iterators back to pointer value_type rather than reference value_type

In addition, I've made the pointer and reference typedef 'void' rather than T*
just so they can't get misused. I would've omitted them entirely but
std::distance likes them to be there even if it doesn't use them.

This rolls back r155808 and r155869.

Review by Doug Gregor incorporating feedback from Chandler Carruth.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158104 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/AST/ExprConstant.cpp b/lib/AST/ExprConstant.cpp
index d3ab84f..e9cce9f 100644
--- a/lib/AST/ExprConstant.cpp
+++ b/lib/AST/ExprConstant.cpp
@@ -3418,7 +3418,7 @@
       continue;
 
     LValue Subobject = This;
-    if (!HandleLValueMember(Info, E, Subobject, &*I, &Layout))
+    if (!HandleLValueMember(Info, E, Subobject, *I, &Layout))
       return false;
 
     ImplicitValueInitExpr VIE(I->getType());
@@ -3443,9 +3443,9 @@
     }
 
     LValue Subobject = This;
-    if (!HandleLValueMember(Info, E, Subobject, &*I))
+    if (!HandleLValueMember(Info, E, Subobject, *I))
       return false;
-    Result = APValue(&*I);
+    Result = APValue(*I);
     ImplicitValueInitExpr VIE(I->getType());
     return EvaluateInPlace(Result.getUnionValue(), Info, Subobject, &VIE);
   }
@@ -3536,7 +3536,7 @@
     // FIXME: Diagnostics here should point to the end of the initializer
     // list, not the start.
     if (!HandleLValueMember(Info, HaveInit ? E->getInit(ElementNo) : E,
-                            Subobject, &*Field, &Layout))
+                            Subobject, *Field, &Layout))
       return false;
 
     // Perform an implicit value-initialization for members beyond the end of