Initial implementation of essync tool

This seems odd to me. If the config file can't be read for some reason, I don't want to see a usage error, but the error from reading the config file.

I'd suggest something like this:

     func main() {
          flag.Usage = func() {
               fmt.Fprintf(os.Stderr, "usage: essync <config path>\n")
               flag.PrintDefaults()
               os.Exit(2)
          }
          flag.Parse()
          if len(flag.Args) != 1 {
               flag.Usage()
          }
          if err := populate(flag.Arg(0)); err != nil {
               fmt.Fprintf(os.Stderr, "cannot populate elastic search: %v", err)
               os.Exit(1)
          }
     }

keeping all the command-line related stuff away from the meat of the logic.