Add xyz.openbmc_project.Association.Definitions

Document the interface currently used by some OpenBMC projects that
enables applications to delegate association object lifetime management
to another application.

The behavior of how Associations work is described here:
https://github.com/openbmc/docs/blob/master/object-mapper.md#associations

This patch allows phosphor-dbus-interface-binding-using applications to
drop their local versions of this interface binding description e.g.
https://github.com/openbmc/phosphor-bmc-code-mgmt/blob/f5eaf39/org/openbmc/Associations.interface.yaml.
This is a good thing because carrying local versions of these interface
binding descriptions drives much complexity into the process of simply
building the application.

Change-Id: I34c36c6b0be818368833febb23fd00800616c7b4
Signed-off-by: Brad Bishop <bradleyb@fuzziesquirrel.com>
Signed-off-by: Matt Spinler <spinler@us.ibm.com>
diff --git a/xyz/openbmc_project/Association/Definitions.interface.yaml b/xyz/openbmc_project/Association/Definitions.interface.yaml
new file mode 100644
index 0000000..80cdee8
--- /dev/null
+++ b/xyz/openbmc_project/Association/Definitions.interface.yaml
@@ -0,0 +1,12 @@
+description: >
+    This interface is used to tell the mapper to create
+    xyz.openbmc_project.Association interfaces on <this path>/forward and
+    endpoint/reverse.
+properties:
+    - name: Associations
+      type: array[struct[string,string,string]]
+      description: >
+          An array of forward, reverse, endpoint tuples where:
+              forward - The type of the association.
+              reverse - The type of the association to create for the endpoint.
+              endpoint - The association endpoint.