[SystemInfo] Use singleton model to support multi frames

The old design is one frame one set of listening mechanism. So when there are multi-frames,
there will be multiple sets of events. However, the vconf only support to register the first one
when asking twice for the same vconf_notify_key_changed with same Key and vconf_callback_fn
and the others will be ignored. So, the old framework couldn't resolve the vconf issue.

The current design uses singleton event listening mechanism.
Every property object (such as: cpu, local, storage ...) is singleton.
Each of them will maintain an according events list. Use StartListening(Context* api) to
push back the current context to the according list. Use StopListening(Context* api) to
remove the current context from the list. When the property value changed,
iterate the list to post message to all the listenng context.