status: tell the user the working tree is clean

If there is nothing output at all, tell the user the working tree is
completely clean.  It just gives them a bit more of a warm-fuzzy
feeling knowing repo and until the end.  It also more closely
matches with the output of git status.

Signed-off-by: Shawn O. Pearce <sop@google.com>
diff --git a/project.py b/project.py
index d2ec34f..bd35c65 100644
--- a/project.py
+++ b/project.py
@@ -352,7 +352,7 @@
     df = self.work_git.DiffZ('diff-files')
     do = self.work_git.LsOthers()
     if not di and not df and not do:
-      return
+      return 'CLEAN'
 
     out = StatusColoring(self.config)
     out.project('project %-40s', self.relpath + '/')
@@ -400,6 +400,7 @@
       else:
         out.write('%s', line)
       out.nl()
+    return 'DIRTY'
 
   def PrintWorkTreeDiff(self):
     """Prints the status of the repository to stdout.
diff --git a/subcmds/status.py b/subcmds/status.py
index 1615b42..853f150 100644
--- a/subcmds/status.py
+++ b/subcmds/status.py
@@ -23,5 +23,12 @@
 """
 
   def Execute(self, opt, args):
-    for project in self.GetProjects(args):
-      project.PrintWorkTreeStatus()
+    all = self.GetProjects(args)
+    clean = 0
+
+    for project in all:
+      state = project.PrintWorkTreeStatus()
+      if state == 'CLEAN':
+        clean += 1
+    if len(all) == clean:
+      print 'nothing to commit (working directory clean)'