Integration tests

This adds basic integration tests.  It will run through create, stop, start, kill and remove for the drivers using a WaitGroup so all are tested simultaneously.  Currently, only virtualbox and digitalocean are tested by default as the others need environment variables for testing.

One thing to note:  we will need to discuss how to handle the provider actions.  For example, there is a race condition with DO where it tries to call one action before another has completed.  Adding manual delays seemed hacky.  I'm not sure if having the driver block until the action has completed is a possibility or perhaps having the driver action check if there is a pending action and wait -- that would probably be the best IMO.

Also note, to test virtualbox you will most likely need to do this from your host (not in Docker).  To test your local machine build you will need to set the environment variable `MACHINE_BINARY` otherwise it will look in your `PATH` for `machine` which is most likely not what you want.
Thanks!

On Tuesday, December 23, 2014, Nathan LeClaire <notifications@github.com>
wrote:

> In _integration-test/test_vars.go
> <https://github.com/docker/machine/pull/123#discussion-diff-22244692>:
>
> > +	} else {
> > +		machineTestDrivers = []MachineDriver{
> > +			{
> > +				name: "virtualbox",
> > +			},
> > +			{
> > +				name: "digitalocean",
> > +			},
> > +		}
> > +	}
> > +
> > +	// find machine binary
> > +	if machineBin := os.Getenv("MACHINE_BINARY"); machineBin != "" {
> > +		machineBinary = machineBin
> > +	} else {
> > +		whichCmd := exec.Command("which", "machine")
>
> Use exec.LookPath http://golang.org/pkg/os/exec/#LookPath instead
> (cross-platform).
>
> —
> Reply to this email directly or view it on GitHub
> <https://github.com/docker/machine/pull/123/files#r22244692>.
>