message: updated with doxygen and require_subcommand for wallet.
diff: +/**
  + * @file
  + * @defgroup eosclienttool EOS Command Line Client Reference
  + * @brief Tool for sending transactions and querying state from @ref eosd
  + * @ingroup eosclienttool
  + */
  +
  +/**
  + @defgroup eosclienttool
  +
  + @section intro Introduction to EOSC
  +
  + `eosc` is a command line tool that interfaces with the REST api exposed by @ref eosd. In order to use `eosc` you will need to
  + have a local copy of `eosd` running and configured to load the 'eos::chain_api_plugin'.
  +
  + eosc contains documentation for all of its commands. For a list of all commands known to eosc, simply run it with no arguments:
  +```
  +$ ./eosc
  +Command Line Interface to Eos Daemon
  +Usage: ./eosc [OPTIONS] SUBCOMMAND
  +
  +Options:
  + -h,--help Print this help message and exit
  + -H,--host TEXT=localhost the host where eosd is running
  + -p,--port UINT=8888 the port where eosd is running
  + --wallet-host TEXT=localhost
  + the host where eos-walletd is running
  + --wallet-port UINT=8888 the port where eos-walletd is running
  +
  +Subcommands:
  + create Create various items, on and off the blockchain
  + get Retrieve various items and information from the blockchain
  + set Set or update blockchain state
  + transfer Transfer EOS from account to account
  + wallet Interact with local wallet
  + benchmark Configure and execute benchmarks
  + push Push arbitrary transactions to the blockchain
  +
  +```
  +To get help with any particular subcommand, run it with no arguments as well:
  +```
  +$ ./eosc create
  +Create various items, on and off the blockchain
  +Usage: ./eosc create SUBCOMMAND
  +
  +Subcommands:
  + key Create a new keypair and print the public and private keys
  + account Create a new account on the blockchain
  +
  +$ ./eosc create account
  +Create a new account on the blockchain
  +Usage: ./eosc create account [OPTIONS] creator name OwnerKey ActiveKey
  +
  +Positionals:
  + creator TEXT The name of the account creating the new account
  + name TEXT The name of the new account
  + OwnerKey TEXT The owner public key for the account
  + ActiveKey TEXT The active public key for the account
  +
  +Options:
  + -s,--skip-signature Specify that unlocked wallet keys should not be used to sign transaction
  +```
  +*/
  #include <string>
  #include <vector>
  #include <boost/asio.hpp>
  @@ -353,6 +416,7 @@ int main( int argc, char** argv ) {
  string wastPath;
  string abiPath;
  auto setSubcommand = app.add_subcommand("set", "Set or update blockchain state");
  + setSubcommand->require_subcommand();
  auto contractSubcommand = setSubcommand->add_subcommand("contract", "Create or update the contract on an account");
  contractSubcommand->add_option("account", account, "The account to publish a contract for")->required();
  contractSubcommand->add_option("wast-file", wastPath, "The file containing the contract WAST")->required()
  @@ -412,7 +476,7 @@ int main( int argc, char** argv ) {
  // Wallet subcommand
  auto wallet = app.add_subcommand( "wallet", "Interact with local wallet", false );
  -
  + wallet->require_subcommand();
  // create wallet
  string wallet_name = "default";
  auto createWallet = wallet->add_subcommand("create", "Create a new wallet locally", false);
  @@ -505,6 +569,7 @@ int main( int argc, char** argv ) {
  // Benchmark subcommand
  auto benchmark = app.add_subcommand( "benchmark", "Configure and execute benchmarks", false );
  + benchmark->require_subcommand();
  auto benchmark_setup = benchmark->add_subcommand( "setup", "Configures initial condition for benchmark" );
  uint64_t number_of_accounts = 2;
  benchmark_setup->add_option("accounts", number_of_accounts, "the number of accounts in transfer among")->required();
  