Bug 973450 - [settings] refactor Device information panel with AMD patte...

separate hardwareInfo retrieval and check update function into separate modules, and make related tests works in AMD.
The reason why we need `!this._settiings` here is because we don't want to call `init()` if it it not existed. So, are you going to move `init()` inside this constructor instead of calling it from outside ?