Bug 1078381 - Provide confirmation that theme has been changed r=arthurcc

Setting a theme to the database should be a task of modifying models. Any UI update should be preformed based on the result returning from the function. I would suggest to have two function implementing the rollback mechanism:
1. `setTheme`: accepts a theme object as the argument and returns a promise. It calls to `_doSetTheme` for writing the theme related settings. If it fails, it calls to `_doSetTheme` again with the previous theme. If it still fails, it rejects via the promise and let the caller perform the UI updates.
2. `_doSetTheme`: performs the database actions.