Bug 906088 - part 1 - pass String[] to PrefsHelper.getPrefs wherever possible; r=blassey

We want JSONArray to go away, since we're going to be transferring strings via JNI.
Bug 906088 - part 1b - add ArrayList getPrefs method to PrefsHelper; r=bnicholson

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.
Bug 906088 - part 2 - factor out reading an nsString from a Java string in AndroidJavaWrappers.cpp; r=blassey

We duplicate code in several places, and we're going to need this same code for reading
a String[].
Bug 906088 - part 3 - add Preferences events to AndroidGeckoEvent; r=blassey

This is just the C++ side of things; it's simpler to have this code split out as
a separate patch to review.
Bug 906088 - part 4 - refactor browser.js's getPreferences function into a JSON frontend and a "raw" backend; r=mfinkle

This is a small patch, but I think it makes part 5 a little easier to understand.
In part five, we're going to be introducing XPCOM methods that browser.js needs to
implement.  That patch is going to require something very much like handlePreferencesRequest,
so just make it visible here and then part 5 should be much easier to understand.
Bug 906088 - part 5 - send preference requests to JS through JNI and XPConnect rather than JSON; r=blassey,mfinkle

Small fix to notifyPrefObservers to call getPreferences with the new argument style.
Carrying over r+.
Bug 906088 - part 6 - update tests to use the new API; r=kats

Fixed testPrefsObserver to use the correct requestId for unregistering observers.
Changed all tests to use th same hexadecimal constant, per Kats's feedback.  Asking
for actual review now.  Local robocop testing shows the failing tests on try now pass
locally, so I'm assuming I have fixed the issues...
Bug 906963 - Add extra tests and review suggestions from jimb that I missed