v2 php updates with breaking changes

add functions for tag/collection lists on Zotero_Item
add save method to Zotero_Item
apiRequestString wrapper
Zotero_Items::writeItems
client side itemKey creation
update items from multi-write responses
use versions instead of etags

Breaking Change:
Most write functions now return the set of objects passed in for writing, with
updated versions/keys and/or writeFailure properties. This may include
multiple items, even if a single one was passed, if it had additional
children included.
The exception is delete requests, which still return response objects, but
may yet change.
php examples and tests