Refactor wait-vpd-status from script to executable

This commit implements wait-vpd-status.sh logic as an application
written in C++. Moving the logic to C++ allows better error handling and
more flexibility with respect to future requirements.

Test:
```
1. Ensure vpd-manager CollectionStatus property is in "Completed" state.
2. Run wait-vpd-parser executable
3. Observe executable waits for 2s, then reads vpd-manager
   CollectionStatus property and outputs a trace saying VPD collection
   is completed, and then exits with return code 0
4. Using busctl change vpd-manager CollectionStatus property to
   "InProgress"
5. Run wait-vpd-parser executable
6. Observe executable waits for 2s, and reads vpd-manager
   CollectionStatus property for a total of 100 retries. After 100
   retries, it outputs a trace saying timeout and exits with return code 1
7. Using busctl change vpd-manager CollectionStatus property to
   "InProgress"
8. Run wait-vpd-parser executable
9. Observe executable waits for 2s, and reads vpd-manager with retry
   count starting from 100 and counting down.
10. Now change CollectionStatus property to "Completed"
11. Observe executable reads vpd-manager CollectionStatus property and
    outputs a trace saying VPD collection is completed, and then exits
   with return code 0.
```

Change-Id: Ifa96a1262b73f4eacc6e13d4e05c710d6e693035
Signed-off-by: Souvik Roy <souvikroyofficial10@gmail.com>
diff --git a/meson.build b/meson.build
index e7983ea..3b99744 100644
--- a/meson.build
+++ b/meson.build
@@ -63,6 +63,7 @@
 
 if get_option('ibm_system').allowed()
     subdir('vpd-tool')
+    subdir('wait-vpd-parser')
     scripts = ['scripts/wait-vpd-status.sh']
 
     install_data(