Bug 989137 - Part 14: Return a promise from Experiments.init(); r=gfritzsche

Upcoming tests will need to wait on init() to finish before running. We
now return a promise so these tests don't have to look at internal
variables.

--HG--
extra : rebase_source : 487645efe419fb3fa3371f85a81e8f3e1ccd9012
extra : amend_source : 3d6bb785e0ecdabcbff1e5bc62ee7dc56cbb7244
extra : histedit_source : 8d12f7e5c47995a408509a85a527bc86f9a76ccb
Bug 989137 - Part 15: Convert browser_experiments.js to add_task; r=Unfocused

Upcoming tests rely heavily on promises. I just learned that browser
chrome tests support add_task() as an alternative to test(). This patch
ports the browser_experiments.js test and utilized utility functions
to use add_task() and promises.

--HG--
extra : rebase_source : 434b7dc0e899fef0c508d5dd01438514da519ba3
extra : histedit_source : 517043f2bbe7a22bd53e8ae0c77f585ac107f6c9