Bug 890040 - pre: Add ExtendedJSONObject.entrySet.
Bug 890040 - pre: Bump Bagheera version to 0.11.
Bug 890040 - Part 0: Consume responses so that we release connections.
Bug 890040 - Part 1: Support multiple obsolete documents IDs in BagheeraClient.
Bug 890040 - Part 2: Record all potentially uploaded IDs for future deletion.
Bug 890040 - Part 3: Build out ObsoleteDocumentTracker API to not expose JSON.
Bug 890040 - Part 4: Review comments and follow-ups.

Bug 890040 - Review comment: Factor out TEST_URL.
Bug 890040 - Follow-up: Improve logging of obsoleted IDs.
Bug 890040 - Follow-up: Bound the number of obsolete IDs stored.
Bug 890040 - Review comment: Update limits.
Bug 890040 - Review comment: On local exceptions, don't track id and don't decrement on delete.

A "local exception" is one that cannot create a document on the
server.  These ids that we know don't make it to the server shouldn't
bump (too many) legitimate records from the obsolete document queue.

Bug 890040 - Follow-up: Ensure we don't orphan an ID during migration.
Bug 890040 - Review comment: Give document IDs that we know are on the server priority.
Bug 890040 - Follow-up: Pass id and exception through where necessary.
Bug 890040 - Follow-up: Limit the number of deletions attempted when upload is disabled.
Bug 890040 - Protect against orphans in Android health report uploader. r=rnewman

This does two main things.  First, it tracks sets of obsolete document
IDs and retries obsoletes and deletes.  Second, it tracks document IDs
that are attempted to be written to the server for obsolescence or
deletion without waiting for a server response to prevent orphaning
documents on successful upload and failed response.

The ObsoleteDocumentTracker uses a JSON map to maintain obsolete
document IDs and priority values.  That's not the right data
structure; Bug 894194 tracks improving it.