[user-mgmt]: Do late initialization of user init.

When dependency with phosphor-user-manager is removed from host-ipmid,
both the daemons can start on it's own pace, causing host-ipmid to
miss both GetManagedObjects query and signal capture, as host-ipmid
is busy in doing the initialization. Updated code, such that user
initialization is posted and executed as part of io schedule.

Tested:
1. Verified that user list are properly listed after this change.
Note: Also, performed following tests to determine the order didn't cause any
problem. Verified with both ipmi_user.json deleted and preserved.
2. Started phosphor-user-manager after host-ipmid
3. Re-started phosphor-user-manager.
4. Started phosphor-host-ipmid after phosphor-user-manager.
5. Restarted phosphor-host-ipmid.
6. Added sleep code to force the scenario of GetManagedObjects fails, and
signals are captured. and GetManagedObject passes (when both are started).

Change-Id: Id5cc6ada6dd3472ddfd8803c49cd4a2a7fb6c58b
Signed-off-by: Richard Marian Thomaiyar <richard.marian.thomaiyar@linux.intel.com>
diff --git a/user_channel/usercommands.cpp b/user_channel/usercommands.cpp
index 1d9460c..3396d2d 100644
--- a/user_channel/usercommands.cpp
+++ b/user_channel/usercommands.cpp
@@ -672,7 +672,7 @@
 void registerUserIpmiFunctions() __attribute__((constructor));
 void registerUserIpmiFunctions()
 {
-    ipmiUserInit();
+    post_work([]() { ipmiUserInit(); });
     ipmi::registerHandler(ipmi::prioOpenBmcBase, ipmi::netFnApp,
                           ipmi::app::cmdSetUserAccessCommand,
                           ipmi::Privilege::Admin, ipmiSetUserAccess);