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/Interface.h b/Interface.h
index a21a036..8542f18 100644
--- a/Interface.h
+++ b/Interface.h
@@ -106,6 +106,8 @@
     mutable bool mIsJavaCompatibleInProgress;
     Method *createDescriptorChainMethod() const;
     Method *createSyspropsChangedMethod() const;
+    Method *createLinkToDeathMethod() const;
+    Method *createUnlinkToDeathMethod() const;
 
     DISALLOW_COPY_AND_ASSIGN(Interface);
 };