Problem: zring_delete is inconsisent with zlist and zhash

- zring_delete -> zring_remove
- also, zring_detach should use zring_find
Problem: need safe access to last inserted item key

Solution: set hash cursor on insert and update, so that zhash_cursor
returns this. The key is copied in the hash item, so safe to refer to
until the item is deleted.
Problem: need keyed access to zring items

We often use a list/hash combination. This is delicate for several
reasons, mainly it's unclear which container owns the item, and it
unclear when to properly duplicate and destroy items.

Solution: add a keyed access API into zring, and make zring an
authoratative container for such use cases.

  - zring_insert -> insert item by key
  - zring_lookup -> lookup item by key
  - zring_delete -> delete item by key

The keyed access cooperates with the zring list access, so that if you
remove items from the list, they're also removed from the hash. In the
same way, if you do zring_lookup, this leaves the ring cursor at the
proper place.