Boot from volume

PR corresponding to #258 
Rather than this, you should be able to make a `bootfromvolume.CreateOptsExt` and add it to the create-options chain up above:

```go
drive := diskconfig.CreateOptsExt{
  CreateOptsBuilder: base,
  DiskConfig: opts.DiskConfig,
}

bfv := bootfromvolume.CreateOptsExt{
  CreateOptsBuilder: drive,
  BlockDevice: opts.BlockDevice,
}

// ...

res, err := bfv.ToServerCreateMap()
```

That keeps the map-building logic centralized in the "bootfromvolume" package but still lets us stack the extensions.