php - pass version 2 api header
JS - don't get updatedCollections with empty keys list
JS - fix some debug log levels
remove /top inside collection workaround

unnecessary with updated api
comma-separated Multi-content requests are valid
JS api v2 updates

 - get rid of etags, use object versions instead
 - keep pristine objects that get extended for writes
 - Zotero.Item.writeApiObj returns the simple JS object to be PUT/POSTed
 - Zotero.Feed takes an xmlhttprequest as second arg so it can get headers
 - update itemVersion on writes
 - save failure codes and messages with items on writes
 - all item writes are multi-object, as this simplifies potentially creating children as well.
 This may change when client-defined keys are possible for new items. For single item
 deletes, at least, there is a response code clarity benefit for single item operations.

 other:
  - more consistently assign and use new name for "this"
  - remove some old sync PoC code
  - move multi-item operation implementations into Zotero.Items
libZotero JS QUnit tests