fw update: implement example device

Introduce example-device and example-code-updater, which are used as
examples for how to implement devices and code updaters according to the
design [1]

Tested:

The example code updater allows us to perform manual testing without
a dependency on any specific device.

Running the example code updater results in follow dbus output:

```
busctl --full --no-pager tree xyz.openbmc_project.ExampleCodeUpdater

└─ /xyz
  └─ /xyz/openbmc_project
    └─ /xyz/openbmc_project/software
      └─ /xyz/openbmc_project/software/ExampleSoftware_4081

busctl --full --no-pager introspect xyz.openbmc_project.ExampleCodeUpdater /xyz/openbmc_project/software/ExampleSoftware_4081

CodeUpdater /xyz/openbmc_project/software/ExampleSoftware_4081
NAME                                    TYPE      SIGNATURE RESULT/VALUE                                                           FLAGS
...
xyz.openbmc_project.Software.Activation interface -         -                                                                      -
.Activation                             property  s         "xyz.openbmc_project.Software.Activation.Activations.Active"           emits-change writable
.RequestedActivation                    property  s         "xyz.openbmc_project.Software.Activation.RequestedActivations.None"    emits-change writable
xyz.openbmc_project.Software.Update     interface -         -                                                                      -
.StartUpdate                            method    hs        o                                                                      -
.AllowedApplyTimes                      property  as        1 "xyz.openbmc_project.Software.ApplyTime.RequestedApplyTimes.OnReset" emits-change
xyz.openbmc_project.Software.Version    interface -         -                                                                      -
.Purpose                                property  s         "xyz.openbmc_project.Software.Version.VersionPurpose.Unknown"          emits-change writable
.Version                                property  s         "v1.0"
```

References:
[1] https://github.com/openbmc/docs/blob/master/designs/code-update.md

Change-Id: I2bad241b3102e58eda5139174791adda82f6ca95
Signed-off-by: Alexander Hansen <alexander.hansen@9elements.com>
diff --git a/test/common/exampledevice/meson.build b/test/common/exampledevice/meson.build
new file mode 100644
index 0000000..eebead1
--- /dev/null
+++ b/test/common/exampledevice/meson.build
@@ -0,0 +1,30 @@
+libexampledevice = static_library('example_device',
+  'example_device.cpp',
+  include_directories: ['.', common_include],
+  dependencies: [
+    pdi_dep,
+    phosphor_logging_dep,
+    sdbusplus_dep,
+    libpldm_dep,
+  ],
+  link_with: [
+    software_common_lib,
+  ],
+)
+
+executable(
+  'example-code-updater',
+  'example_updater_main.cpp',
+  include_directories: ['.', common_include],
+  dependencies: [
+    pdi_dep,
+    phosphor_logging_dep,
+    sdbusplus_dep,
+    libpldm_dep,
+  ],
+  link_with: [
+    libpldmutil,
+    software_common_lib,
+    libexampledevice
+  ],
+)