Fix debugger crashes in presence of proxy objects.

Fix ClassHelper::NumDirectInterfaces to use IfTable::Count instead of the
iftable array's length (which is twice the interface count). This happens when
processing ReferenceType::Interfaces command and was causing a crash.

Return ABSENT_INFORMATION error code when we're asked for the source file of a
proxy class. Otherwise we call ClassHelper::GetSourceFile which expect the
class has a corresponding ClassDef item in the DEX file which is not true for
proxy classes.

Add new proxy_test to check ClassHelper works correctly with proxy classes.

Bug: 13426918
Change-Id: I5c1212b1a697dd7dc1ab18e99552ee113c533a5a
diff --git a/runtime/debugger.cc b/runtime/debugger.cc
index 7e2dfd2..1276cd9 100644
--- a/runtime/debugger.cc
+++ b/runtime/debugger.cc
@@ -1025,6 +1025,9 @@
   if (c == NULL) {
     return status;
   }
+  if (c->IsProxyClass()) {
+    return JDWP::ERR_ABSENT_INFORMATION;
+  }
   result = ClassHelper(c).GetSourceFile();
   return JDWP::ERR_NONE;
 }