This is the simplest and most durable option: when Settings (GeckoPreferences) sends a Preferences:Set message to Gecko, typically via PrefsHelper and a SharedPreferences change observer, we include a "flush": true field.
When browser.js handles Preferences:Set, it checks for this and flushes.
The scope of this change, then, is preferences changes within Settings; nothing else (e.g., turning on search suggestions) is affected.
I decided to do this rather than sending a flush message when leaving Settings for three reasons:
* One less message.
* No flushes if nothing changed.
* No data loss if we crash before the user completes the departure from Settings (e.g., they change something then hit the Android 'home' button).
Related to the last patch, this is the lone place where we transfer an ArrayList.
Just move the code into PrefsHelper in case anybody ever wants to do something similar.