Bug 1042943 - Allow users to switch search engine

I don't think that SearchFragment needs to know about the implementation of SearchEngineFactory, meaning that it shouldn't need to know about the fact that this is backed by SharedPreferences.

Instead of listening directly for changes to shared preferences, I think we should add an API to SeachEngingesFactory that lets consumers (like SearchFragment here) listen for changes to the default search engine.