blkback: coalesce and parallelise requests

blkback will take a queue of requests from the ring and divide them into
a list of sets, where each set may be issued in parallel while still
providing the illusion that the queue of requests was processed serially.
The rule is that every operation in a set must not depend on the side-effect
of any other operation in the same, or later sets.

 -- this may actually be overkill since the frontend probably assumes that all
    requests on the ring are issued in parallel anyway (otherwise why would
    there be a barrier operation in the protocol?)

blkback will then coalesce the request structures so that requests to read
or write adjacent sectors are merged. blkback will then coalesce the Cstruct.t
buffers which are also adjacent in the processes' address space. This works
nicely when we map the grants in a batch, since the buffers end up in
contiguous addresses.

Signed-off-by: David Scott <dave.scott@eu.citrix.com>
Merge pull request #24 from djs55/broken-optimise-blkback

blkback: coalesce and parallelise requests
blkback: functorise over Activations, Xenstore and a backing store

This allows us to add more of the setup logic to the library. We
now have

make: to create the frontend/backend directories
run: to serve the requests for a particular device
request_close: to request a hot-unplug
destroy: to destroy the frontend/backend directories

Signed-off-by: David Scott <dave.scott@eu.citrix.com>
Regenerate OASIS

Signed-off-by: David Scott <dave.scott@eu.citrix.com>
release 1.1.0, update CHANGES

Signed-off-by: David Scott <dave.scott@eu.citrix.com>
Merge pull request #25 from djs55/megafunctor

Functorise over Activations, Xenstore and backing store