Correct the priority of initial variables

Also make builtin variables recursive.
diff --git a/bootstrap.go b/bootstrap.go
index 91cac40..cdacd8c 100644
--- a/bootstrap.go
+++ b/bootstrap.go
@@ -24,13 +24,13 @@
 
 func bootstrapMakefile(targets []string) (makefile, error) {
 	bootstrap := `
-CC:=cc
-CXX:=g++
-AR:=ar
-MAKE:=kati
+CC?=cc
+CXX?=g++
+AR?=ar
+MAKE?=kati
 # Pretend to be GNU make 3.81, for compatibility.
-MAKE_VERSION:=3.81
-SHELL:=/bin/sh
+MAKE_VERSION?=3.81
+SHELL=/bin/sh
 # TODO: Add more builtin vars.
 
 # http://www.gnu.org/software/make/manual/make.html#Catalogue-of-Rules