Boot from volume

PR corresponding to #258 
Do you think you can turn this into its own subtype?

```go
type SourceType string

const (
  Volume SourceType = "volume"
  Snapshot SourceType = "snapshot"
  Image SourceType = "image"
)

// ...

type BlockDevice struct {
  // ...

  SourceType SourceType `json:"source_type"`
}
```