remove obsolete function
throw Errors, not strings
fix updating of items from chunks after write
Change jQuery Deferreds to js/DOM Promises

ajaxRequests now return a Dom Promise, resolving or rejecting with a response
object with data, textStatus, and jqxhr properties.
matchColoredTags and parseLibString util functions
Zotero.Library updates

-emptyTrash in a single call
-fix bad group urls
-change how we process/store library settings from the API to keep them
distinct from other preferences.
-fix buildItemDisplay view to filter out (or select) trashed items
isWritable check for Zotero.Group
debug cleanup and Promise fixes

-Make sure all debug statements have levels
-Fix bad references left over from Promise refactor
-Don't catch most rejections inside libZotero. Consumer should be able to deal
with them better.
fix collections url construction

don't add collectionKey to both path and query string when target is
collections but only a single collectionKey is specified (for example
when syncing and only a single collection has been updated)
remove obsolete code. add Zotero.trigger/listen
clean up Zotero.Collection

default apiObj on construction
more consistent variable naming with api
fix collection sorting being broken if collection didn't come from api
remove collection from collections locally after api deletion
update Zotero.Collections

- move more into initSecondaryData which needs to be called after updates to
collections that affect rendering
- removeLocalCollection(s) calls to remove reference and initSecondaryData
- collections.nestCollections to do what was being done multiple places
while adding collections before
- multi-request writeCollections
fix Library.addCollection
rename parentCollection Idb index
update Zotero.Library

- remove obsolete code
- use Library.Trigger to trigger events with library id filter
- fix loadUpdatedCollections to update secondary data and take into account
collection deletions
- have getDeleted always return a Promise. If we've already gotten deleted
info for a version resolve with that data, otherwise make the api request
- matchColoredTags function: takes a list of tags and returns a list of
colors to display on the item
update tags

- give Zotero.Tag a color
- Zotero.Tags.getTag
- use Zotero.Library triggers
don't access properties that may not exist
make updateObjectsFromWriteResponse work with collections