Create driver model and refactor virtualbox dependencies into driver

Laying out some foundation work for multi-hypervisor support. Some keys changes include:
- New Machine interface defined in driver/driver.go.
- Move common data structures from virtualbox into driver package.
- Eliminated all direct references to virtualbox package.
- Added --driver flag. e.g. boot2docker-cli --driver=dummy up
- Added --init flag for optional auto init. e.g. boot2docker-cli --init=true up
Ditto:

```go
defer func() {
	if ee := dstImg.Close(); ee != nil {
		err = ee
	}
}()
```