veyron/lib/cmdline: Avoid repeatedly printing default help.

The previous behavior of "help ..." would repeatedly list and
print the default help for each command and subcommand.  This
leads to cluttered output, especially when using -style=godoc to
generate package doc for each tool.  The new behavior fixes this.

Also added package doc for every binary using the cmdline
package, and fixed some minor typos.  Note that the "long"
description of each root command should be of the form "The foo
tool ..." so that the generated godoc is idiomatic.

Change-Id: Ided6ed61f569a6902a780bc552691885574b72a8
diff --git a/tools/binary/impl/impl.go b/tools/binary/impl/impl.go
index b5a1cec..d43ebd3 100644
--- a/tools/binary/impl/impl.go
+++ b/tools/binary/impl/impl.go
@@ -84,9 +84,11 @@
 
 func Root() *cmdline.Command {
 	return &cmdline.Command{
-		Name:     "binary",
-		Short:    "Command-line tool for interacting with the veyron binary repository",
-		Long:     "Command-line tool for interacting with the veyron binary repository",
+		Name:  "binary",
+		Short: "Tool for interacting with the veyron binary repository",
+		Long: `
+The binary tool facilitates interaction with the veyron binary repository.
+`,
 		Children: []*cmdline.Command{cmdDelete, cmdDownload, cmdUpload},
 	}
 }
diff --git a/tools/binary/main.go b/tools/binary/main.go
index b512f32..a206d11 100644
--- a/tools/binary/main.go
+++ b/tools/binary/main.go
@@ -1,3 +1,73 @@
+// Below is the output from $(binary help -style=godoc ...)
+
+/*
+The binary tool facilitates interaction with the veyron binary repository.
+
+Usage:
+   binary <command>
+
+The binary commands are:
+   delete      Delete binary
+   download    Download binary
+   upload      Upload binary
+   help        Display help for commands
+
+The global flags are:
+   -alsologtostderr=true: log to standard error as well as files
+   -log_backtrace_at=:0: when logging hits line file:N, emit a stack trace
+   -log_dir=: if non-empty, write log files to this directory
+   -logtostderr=false: log to standard error instead of files
+   -max_stack_buf_size=4292608: max size in bytes of the buffer to use for logging stack traces
+   -stderrthreshold=2: logs at or above this threshold go to stderr
+   -v=0: log level for V logs
+   -vmodule=: comma-separated list of pattern=N settings for file-filtered logging
+   -vv=0: log level for V logs
+
+Binary Delete
+
+Delete connects to the binary repository and deletes the specified binary
+
+Usage:
+   binary delete <von>
+
+<von> is the veyron object name of the binary to delete
+
+Binary Download
+
+Download connects to the binary repository, downloads the specified binary, and
+writes it to a file.
+
+Usage:
+   binary download <von> <filename>
+
+<von> is the veyron object name of the binary to download
+<filename> is the name of the file where the binary will be written
+
+Binary Upload
+
+Upload connects to the binary repository and uploads the binary of the specified
+file. When successful, it writes the name of the new binary to stdout.
+
+Usage:
+   binary upload <von> <filename>
+
+<von> is the veyron object name of the binary to upload
+<filename> is the name of the file to upload
+
+Binary Help
+
+Help displays usage descriptions for this command, or usage descriptions for
+sub-commands.
+
+Usage:
+   binary help [flags] [command ...]
+
+[command ...] is an optional sequence of commands to display detailed usage.
+The special-case "help ..." recursively displays help for all commands.
+
+The help flags are:
+   -style=text: The formatting style for help output, either "text" or "godoc".
+*/
 package main
 
 import (