Bug 1055897 - [settings] add settings panel support

We could simply use:
```
if (!validate()) {
  return Promise.reject('validation failed');
}
```