sheep: modify sheepdog_proto.h to make it usable in linux kernel module
sheepdev: use proc entry to control adding/removing devices

Add a proc entry /proc/sheep for sheep device controlling, by writing to
this entry to add or remove device

For example:

Add a sheep VDI as a block device:
echo "add 127.0.0.1 linux:tag" > /proc/sheep

Remove a sheep device:
echo "del linux:tag" > /proc/sheep
sheepdev: add connect.c for network operations
sheepdev: add sheep.c to process the sheepdog protocol
sheepdev: make it possible to add or remove a sheep device

This patch provides functions to create a sheep device by writing to
the proc entry, but it hasn't processed the IO requests, it just ends
the requests with -EIO.

It creates sheep devices named /dev/sheepX, but until now, it can not
handle IO request, any read/write request to this device will get EIO
sheepdev: create kernel threads to process the IO request in the driver

This patch creates two kernel threads 'sheep_req' and 'sheep_fin' to process
the IO requests and sheep response respectively, sheep_req just fetches IO request
from the pending list, and forward the request to sheep, sheep_fin waits for
sheep response, by which to end the IO request in the finish list.

After this patch, we can use the device normally, such as format/mount the device:

# mkfs.ext4 /dev/sheepa
# mount -t ext4 /dev/sheepa test
sheepdev: make it safe to open a snapshot VDI 

In case we open a snapshot VDI to make it as a block device, we immediately
create a new writable VDI for this snapshot just as what QEMU does, then we
can safely write to this VDI
sheepdev: add Makefile.in and modify configure.ac to adopt sheepdev