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
Why not:

```go
defer func() {
 	if ee := srcImg.Close(); ee != nil {
 		err = ee
 	}
 }()
```