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/Android.bp b/Android.bp
index 8eae5b5..7f32fcd 100644
--- a/Android.bp
+++ b/Android.bp
@@ -33,6 +33,7 @@
         "ArrayType.cpp",
         "CompoundType.cpp",
         "ConstantExpression.cpp",
+        "DeathRecipientType.cpp",
         "EnumType.cpp",
         "FQName.cpp",
         "HandleType.cpp",