Fix getInterfaceVersion() inconsistency bug between backends

Java:
- Server
  writeNoException(), and then writeInt(version)
- Client
  As-is: just readInt() -> read exception code, not version
  To-be: readException, and then readInt() -> consume exception code first

Cpp:
- Transaction code
  As-is: getInterface's ID
  To-be: FIRST_CALL_TRANSACTION + the ID
- Server & Client
  As-is: No exception read/write before version code
  To-be: Add exception value before version code

Bug: 133118233
Test: m
Test: atest CtsNdkBinderTestCases
Test: ./runtests.sh
Change-Id: I168a0b8ff7e1871afd95a0ab76b544bfe131a9ed
Merged-In: I168a0b8ff7e1871afd95a0ab76b544bfe131a9ed
diff --git a/generate_java_binder.cpp b/generate_java_binder.cpp
index f017d62..8ced119 100644
--- a/generate_java_binder.cpp
+++ b/generate_java_binder.cpp
@@ -828,6 +828,7 @@
            << "      data.writeInterfaceToken(DESCRIPTOR);\n"
            << "      mRemote.transact(Stub." << transactCodeName << ", "
            << "data, reply, 0);\n"
+           << "      reply.readException();\n"
            << "      mCachedVersion = reply.readInt();\n"
            << "    } finally {\n"
            << "      reply.recycle();\n"