Cleanup: initializeVolume

- Use a common struct for Volumes
- Split out some functionality in intializeVolume into separate functions
- Removes some duplicate code
- In general much easier to grok the code now

Docker-DCO-1.1-Signed-off-by: Brian Goff <cpuguy83@gmail.com> (github: cpuguy83)
This would create more code
```go
if !filepath.IsAbs(volHostPath) {
  return vol, fmt.Errorf("...")
}

return vol, nil
```

Looking at it... either way is fine I suppose.  I'll change it if that's what we want.