Change the semantics for Entity.

Entity can now refer to declarations that are not visible outside the translation unit.
It is a wrapper of a pointer union, it's either a Decl* for declarations that don't
"cross" translation units, or an EntityImpl* which is associated with the specific "visible" Decl.

Included is a test case for handling fields across translation units.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76515 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/test/Index/t2.c b/test/Index/t2.c
index 8e405cc..76d5d6c 100644
--- a/test/Index/t2.c
+++ b/test/Index/t2.c
@@ -5,4 +5,7 @@
 void bar_func(void) {
   global_var += 100;
   foo_func(global_var);
+
+  struct MyStruct *ms;
+  ms->field_var = 10;
 }