Bug 1065279 - [settings] refactor Hotspot panel with AMD pattern

BTW, the reason of not returning the constructor function directly is because we would like to hide the use of `new`.