Problem: container APIs aren't consistent

Comment: use of cursor is IMO overdeveloped in zring and puts
onus on application to set state correctly. This shows in
methods like zring_delete, which depend on that state. I don't
like it. The zlist API for deleting was a single "find item
and then delete item" semantic that I prefer.

Solution: make container APIs simpler and more consistent.

- use czmq_destructor, czmq_duplicator, and czmq_comparator for
  callbacks

- deprecate autofree in zhash and zlist

- use zxxx_set_destructor () etc. to set these at container level

- deprecate _dup and make new _copy that uses duplicator, as the
  zlist_dup method depends on autofree

- clean up list insertion methods: _prepend, _append, and no
  _insert

- rename/deprecate _remove -> _delete for consistency

- change zring_delete to do item search as zlist_delete

- add _detach as non-destructive delete (if item destructor isn't
  set, does exactly same as delete)

Still todo: modify rest of CZMQ codebase to use this new API.