sheepfs: add cache for http interface

At present, every read operation to files on sheepfs for http interface will
make a new http request which is bad for performance, so we add a cache: read
big chunk of data from http interface and then give it to read operation
on local.

To implement it, we need to add 'release' interface in fuse.

Signed-off-by: Robin Dong <sanbai@taobao.com>
Signed-off-by: Liu Yuan <namei.unix@gmail.com>
sheepfs: make fetching data for cache become async operation

Currently, we have add cache for http interface of sheepfs.But it will
only fetch data from http request when fuse operation has read out of
the cache.

For better performance, we use 'double buffer' tech: fuse is reading
one buffer and a new created thread could read future data onto another
buffer at the same time. It will make reading operation more smoothly
and faster.

We use two pointer: 'ready' and 'prepare' to point the double buffers
and use classic 'consumer and producer model' to avoid race condition.

Signed-off-by: Robin Dong <sanbai@taobao.com>
Signed-off-by: Liu Yuan <namei.unix@gmail.com>
test: add test case for cache of http interface in sheepfs

Signed-off-by: Robin Dong <sanbai@taobao.com>
Signed-off-by: Liu Yuan <namei.unix@gmail.com>
tests: fix mistake in _cleanup_devices()

At present, it reports wrong message when running test cases:

	yliu@ubuntu-precise:~/sheepdog/tests/functional$ sudo ./check 089
	PLATFORM      -- Linux/x86_64 ubuntu-precise 3.11.0-14-generic

	089 Last Used:9s.  Test http interface of sheepfs
	umount: /tmp/sheepdog/089/s: not found
	rm: cannot remove '/tmp/sheepdog/089/sheepfs': Device or resource busy
	Passed all 1 tests

The "grep -o $WD/.../." sometimes will match out the wrong term
"/tmp/sheepdog/s" for "/tmp/sheepdog/sheepfs". So we use awk to
fetch term instead of reguler-expression in grep.

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