This is finally the patch which fundamentally changes the way how temporary
origins are initialized. Currently, when temporary storage is accessed for the
first time, all temporary origins need to be synchronously initialized. This
causes two major problems. First, large temporary storage can block first page
load for long time. Second, one broken origin breaks entire temporary storage.
These two problems can be mitigated in a big way by making the initialization
asynchronous. A lot of stuff had to be refactored, new infrastructure had to be
added and the support for conditional lazy initialization of origins had to be
implemented. This patch adds support for continuous background initialization
of all temporary origins collected during temporary storage initialization. So
if a page needs to access temporary storage, only origins for given group are
initialized. Origins for other groups are initialized in the background.
The background origin initialization is still considered to be experimental,
not recommended for normal use (disabled by default).
Differential Revision: https://phabricator.services.mozilla.com/D199082