Add (un)linkToDeath to generated interfaces.

(un)linkToDeath is now a part of IBase, and can be
called on any generated HIDL interface. The implementation
is a no-op, except in proxy objects, which are by
definition a different process than the interface they point
to.

Since clients are not aware of the transport implementation, we must
wrap the transport-independent callback in a transport-specific
callback object. In case of binder, that object is a
hidl_binder_death_recipient.

The binder proxy object contains a list of registered death
recipients, as well as a mutex to protect access to the list.
The list is required to allow us to map back transport-independent
callbacks to transport-dependent callbacks in unlinkToDeath().

Bug: 31632518
Test: mma, hidl_test
Change-Id: I5083a8789dd706a886a8a09f8c733031a351a36a
diff --git a/hidl-gen_y.yy b/hidl-gen_y.yy
index 9c0e75b..75843c5 100644
--- a/hidl-gen_y.yy
+++ b/hidl-gen_y.yy
@@ -59,8 +59,8 @@
 
         // Inherited names by interfaces from IInterface / IBinder
         "onAsBinder", "asBinder", "queryLocalInterface", "getInterfaceDescriptor", "isBinderAlive",
-        "pingBinder", "dump", "transact", "linkToDeath", "unlinkToDeath", "checkSubclass",
-        "attachObject", "findObject", "detachObject", "localBinder", "remoteBinder", "mImpl",
+        "pingBinder", "dump", "transact", "checkSubclass", "attachObject", "findObject",
+        "detachObject", "localBinder", "remoteBinder", "mImpl",
     });
     std::string idstr(identifier);
     if (std::find(reserved.begin(), reserved.end(), idstr) != reserved.end()) {