Bug 1073520 - Optimize render time of panels in settings app

The patch seems composed based on a earlier branch? Note that all basic panel functions (`hide`, `beforeHide`, `show`, `beforeShow`) returns a promise object and we have to make sure they are called sequentially in the specific order. There are cases we need to finish the commit of data before navigating to the next panel so that the the panel could use the data.