Bug 998847 - [Settings] refactor storage.js with AMD pattern

- move dialog into root panel
- rename id to class
- fix marionette test
- un-registered observer when leaving the panel
- add enabled to observer/unobserve
- create separated modules for each menu item
- move usb and media item together
- fix binding
We should bind `this` to the function or we are not able to access to `this._element`. Consider to store the bound version so that we can unobserve the function easily.