sheep/http: unify onode lookup/find operation

Previously we discard the onode object, so can't check if object exists by loop
around the adjacent objects one by one becaue there is might be hole between
collisioned hash chains. For this reason, we have to iterate all the objects
in a container to check if some one is in. This is obviously:

 - time consuming because CREATE/DELETE/GET operations will firstly call
   onode_find() to iterate the container.
 - can't scale at all. Every object operation will read the whole onodes in the
   bucket.

This patch reworks the onode lookup operation:

- We check adjacent objects one by one once we get a start index by hashing
  name. Unallocated slot marks the end of the check window.

For e.g, if we are going to check if fish in the following bucket, assume
fish hashes to 'sheep', so we compare the name one by one from 'sheep' to
'fish'. '\0' indicates that object was deleted before checking.

[ sheep, dog, wolve, '\0', fish, {unallocated}, tiger, ]

With this lookup mechanism, we can safely remove onode_find(). With this patch
we can observe a huge time reduction even in tests/func/081, 082:

before:
081 Last Used:20s.  Test http service with a single server
082 Last Used:21s.  Test http service with multiple servers

after:
081 Last Used:11s.  Test http service with a single server
082 Last Used:12s.  Test http service with multiple servers

Reviewed-by: Robin Dong <sanbai@taobao.com>
Signed-off-by: Liu Yuan <namei.unix@gmail.com>