[Init draft, don't merge]

The init draft of a minimum component launcher, it 
- sends editable and data-config down
- uses MutationObserver so when its child's data-config changes, it captures the change and send it to player by fireCustomeEvents
avoid sending the same data twice

one case:
- launcher send config to child
- this triggers mutation observer
- mutation observer would have fired another round of event to player if not checking for whether the child is already at the same state as the launcher