git-gui: Use git diff --submodule when available

Doing so is much faster and gives the same output.
Here are some numbers:

  $ time git submodule summary
  real	0m0.219s
  user	0m0.050s
  sys	0m0.111s

  $ time git diff --submodule
  real	0m0.012s
  user	0m0.003s
  sys	0m0.009s

Signed-off-by: Jens Lehmann <Jens.Lehmann@web.de>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
diff --git a/lib/diff.tcl b/lib/diff.tcl
index 066755b..cd5b74c 100644
--- a/lib/diff.tcl
+++ b/lib/diff.tcl
@@ -281,6 +281,15 @@
 		}
 	}
 
+	if {[string match {160000 *} [lindex $s 2]]
+	 || [string match {160000 *} [lindex $s 3]]} {
+		set is_submodule_diff 1
+
+		if {[git-version >= "1.6.6"]} {
+			lappend cmd --submodule
+		}
+	}
+
 	lappend cmd -p
 	lappend cmd --no-color
 	if {$repo_config(gui.diffcontext) >= 1} {
@@ -296,9 +305,7 @@
 		lappend cmd $path
 	}
 
-	if {[string match {160000 *} [lindex $s 2]]
-        || [string match {160000 *} [lindex $s 3]]} {
-		set is_submodule_diff 1
+	if {$is_submodule_diff && [git-version < "1.6.6"]} {
 		if {$w eq $ui_index} {
 			set cmd [list submodule summary --cached -- $path]
 		} else {
@@ -387,7 +394,9 @@
 			}
 		} elseif {$is_submodule_diff} {
 			if {$line == ""} continue
-			if {[regexp {^\* } $line]} {
+			if {[regexp {^Submodule } $line]} {
+				set tags d_@
+			} elseif {[regexp {^\* } $line]} {
 				set line [string replace $line 0 1 {Submodule }]
 				set tags d_@
 			} else {