blkfront: add heuristics to 'connect' which understand Linux devices like 'xvda'

From the user's point of view the common case is:
* user writes an xl/xm config file which adds a disk with virtual
  device "xvda"
* [connect "xvda"] will connect to this block device
  (as will [connect "51712"] and [connect "/dev/xvda"])

connect will interpret the id as follows (first match wins)
1. id is a xenstore "bus slot number" (e.g. conventionally Linux
   major/minor numbers encoded as a single integer like 51712,
   but which can be any integer)
2. id is a "Linux device string" (with or without "/dev/" prefix)
   translated into a "bus slot number"

Signed-off-by: David Scott <dave.scott@eu.citrix.com>
connect: check if 'id' uniquely matches a backend 'params' key

From the user's point of view they can now write:
* target=/dev/loop0 in the xl/xm config file
* [connect "/dev/loop0"] will match this block device.

Normally we shouldn't rely on knowing about the backend's internal
structure (it could be a special driver domain), but for simple
cases (such as when developing locally on a laptop) it's convenient
to use the dom0 file or device name.

Signed-off-by: David Scott <dave.scott@eu.citrix.com>
blkback: avoid splitting requests into individual pages

We want to pass big requests down the stack, to reduce the impact
of per-request overheads (context-switching, enqueueing, dequeueing)

The backend implementation signature is now more like V1_LWT.BLOCK:
read and write take an offset and a list of buffers. Every request
is transformed into one of these, one buffer per segment. Hence
(for now, without indirect descriptors) each request has maximum
size 44KiB.

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

blkfront: add heuristics to 'connect' which understand Linux devices lik...
Merge pull request #23 from djs55/optimise-blkback

blkback: avoid splitting requests into individual pages