Added GetAll and changed `glide get` to allow multiple packages.

Addresses #96
diff --git a/cmd/get_imports.go b/cmd/get_imports.go
index 27b1eec..e977266 100644
--- a/cmd/get_imports.go
+++ b/cmd/get_imports.go
@@ -28,6 +28,65 @@
 	//v.Logger = log.New(os.Stdout, "go-vcs", log.LstdFlags)
 }
 
+// GetAll gets zero or more repos.
+//
+// Params:
+//	- packages ([]string): Package names to get.
+// 	- verbose (bool): default false
+//
+// Returns:
+// 	- []*Dependency: A list of constructed dependencies.
+func GetAll(c cookoo.Context, p *cookoo.Params) (interface{}, cookoo.Interrupt) {
+	names := p.Get("packages", []string{}).([]string)
+	cfg := p.Get("conf", nil).(*Config)
+
+	Info("Preparing to install %d package.", len(names))
+
+	deps := []*Dependency{}
+	for _, name := range names {
+		cwd, err := VendorPath(c)
+		if err != nil {
+			return nil, err
+		}
+
+		root := getRepoRootFromPackage(name)
+		if len(root) == 0 {
+			return nil, fmt.Errorf("Package name is required for %q.", name)
+		}
+
+		if cfg.HasDependency(root) {
+			Warn("Package %q is already in glide.yaml. Skipping", root)
+			continue
+		}
+
+		dest := path.Join(cwd, root)
+		repoURL := "https://" + root
+		repo, err := v.NewRepo(repoURL, dest)
+		if err != nil {
+			Error("Could not construct repo for %q: %s", name, err)
+			return false, err
+		}
+
+		dep := &Dependency{
+			Name: root,
+		}
+		subpkg := strings.TrimPrefix(name, root)
+		if len(subpkg) > 0 && subpkg != "/" {
+			dep.Subpackages = []string{subpkg}
+		}
+
+		if err := repo.Get(); err != nil {
+			return dep, err
+		}
+
+		cfg.Imports = append(cfg.Imports, dep)
+
+		deps = append(deps, dep)
+
+	}
+	return deps, nil
+}
+
 // Get fetches a single package and puts it in vendor/.
 //
 // Params:
diff --git a/cmd/msg.go b/cmd/msg.go
index 0835821..5f7e555 100644
--- a/cmd/msg.go
+++ b/cmd/msg.go
@@ -65,6 +65,12 @@
 		return
 	}
 	fmt.Fprintf(os.Stderr, msg, args...)
+
+	// Get rid of the annoying fact that messages need \n at the end, but do
+	// it in a backward compatible way.
+	if !strings.HasSuffix(msg, "\n") {
+		fmt.Fprintln(os.Stderr)
+	}
 }
 
 // Msg prints a message with optional arguments, that can be printed, of
@@ -79,6 +85,6 @@
 	// Get rid of the annoying fact that messages need \n at the end, but do
 	// it in a backward compatible way.
 	if !strings.HasSuffix(msg, "\n") {
-		fmt.Println("")
+		fmt.Println()
 	}
 }
diff --git a/glide.go b/glide.go
index 4ef0fbd..ca3364e 100644
--- a/glide.go
+++ b/glide.go
@@ -166,7 +166,7 @@
 					fmt.Println("Oops! Package name is required.")
 					os.Exit(1)
 				}
-				cxt.Put("package", c.Args()[0])
+				cxt.Put("packages", []string(c.Args()))
 				cxt.Put("recursiveDependencies", !c.Bool("no-recursive"))
 				if c.Bool("import") {
 					cxt.Put("importGodeps", true)
@@ -409,9 +409,9 @@
 	reg.Route("get", "Install a pkg in vendor, and store the results in the glide.yaml").
 		Includes("@startup").
 		Includes("@ready").
-		Does(cmd.Get, "goget").
+		Does(cmd.GetAll, "goget").
 		Using("filename").From("cxt:yaml").
-		Using("package").From("cxt:package").
+		Using("packages").From("cxt:packages").
 		Using("conf").From("cxt:cfg").
 		Does(cmd.MergeToYaml, "merged").Using("conf").From("cxt:cfg").
 		Does(cmd.Recurse, "recurse").Using("conf").From("cxt:cfg").