Bug 947939 - Rework BrowserProvider for performance and transactionality. r=nalexander, a=sylvestre