[aetest] Allow specifying path to dev_appserver binary (#226)

If the environment variable `APPENGINE_DEV_APPSERVER_BINARY` is set, use it as the path to a dev_appserver binary, rather than the default of `python /path/to/dev_appserver.py`
diff --git a/aetest/instance_vm.go b/aetest/instance_vm.go
index c8f8ff4..89ff8b1 100644
--- a/aetest/instance_vm.go
+++ b/aetest/instance_vm.go
@@ -156,13 +156,18 @@
 			return err
 		}
 	}
-	python, err := findPython()
-	if err != nil {
-		return fmt.Errorf("Could not find python interpreter: %v", err)
-	}
-	devAppserver, err := findDevAppserver()
-	if err != nil {
-		return fmt.Errorf("Could not find dev_appserver.py: %v", err)
+	executable := os.Getenv("APPENGINE_DEV_APPSERVER_BINARY")
+	var appserverArgs []string
+	if len(executable) == 0 {
+		executable, err = findPython()
+		if err != nil {
+			return fmt.Errorf("Could not find python interpreter: %v", err)
+		}
+		devAppserver, err := findDevAppserver()
+		if err != nil {
+			return fmt.Errorf("Could not find dev_appserver.py: %v", err)
+		}
+		appserverArgs = append(appserverArgs, devAppserver)
 	}
 
 	i.appDir, err = ioutil.TempDir("", "appengine-aetest")
@@ -187,8 +192,7 @@
 		return err
 	}
 
-	appserverArgs := []string{
-		devAppserver,
+	appserverArgs = append(appserverArgs,
 		"--port=0",
 		"--api_port=0",
 		"--admin_port=0",
@@ -197,7 +201,7 @@
 		"--clear_datastore=true",
 		"--clear_search_indexes=true",
 		"--datastore_path", filepath.Join(i.appDir, "datastore"),
-	}
+	)
 	if i.opts != nil && i.opts.StronglyConsistentDatastore {
 		appserverArgs = append(appserverArgs, "--datastore_consistency_policy=consistent")
 	}
@@ -206,9 +210,8 @@
 	}
 	appserverArgs = append(appserverArgs, filepath.Join(i.appDir, "app"))
 
-	i.child = exec.Command(python,
-		appserverArgs...,
-	)
+	i.child = exec.Command(executable, appserverArgs...)
+
 	i.child.Stdout = os.Stdout
 	var stderr io.Reader
 	stderr, err = i.child.StderrPipe()