bug 866304. In metro, use the tab-modal prompt implementation that is available in toolkit. r=mbrubeck

This patch replaces metro's 'PromptService' (which implements nsIPromptService and nsIPrompt, among others) with an implementation that simply forwards all calls to toolkit's nsPrompter.js. Before forwarding each call, it writes the "allowTabModal" property on the object obtained from nsPrompter.js, causing the created prompt to be tab-modal.

It also adds functionality to browser.js for creating tab modal prompts. One of the changes made as part of adding this functionality is replacing the <browser> with a <stack> of <browser> objects.
bug 866304 DialogUI dialogs cleanup patch. Removes unused/obsolete code from DialogUI. r=mbrubeck

The "dialog" concept is unused (the last consumer was the sync setup UI which is now a flyout) and is obsolete since we have prompts.
bug 866304 DialogUI "modals" cleanup patch. Removes the "modals" portions of DialogUI. Converts the crash reporter prompt to use nsIPromptService.confirmEx instead of DialogUI.importModal. r=mbrubeck

The crash reporter prompt is the only consumer of DialogUI.importModal and related code. The "modals" concept that DialogUI implements should go away in favor of tab-modal dialogs and tab-agnostic notifications (e.g. flyouts). I don't think that the crash reporter prompt should be a tab modal dialog; I'd prefer to see it become an about: page or perhaps a flyout. Making it a tab-modal prompt was just the easiest thing to do in this set of patches.
bug 864247. If PermitUnload is called while another PermitUnload is being processed, simply allow the unload to happen. r=roc
bug 897121. Move handling of DNT pref to prefsFlyout.js. Correctly (hopefully :) deal with the various pref values that are possible. r=rsilveira