Implement syncthing-cli

Ready for the first round of reviews.

A few issues/notes:

1. I am on Windows, so cygwin sort of refuses to run build.sh, so not sure if I've done all I had to do in regards to packaging (plus I still cannot comprehend how godep works)
2. There is still no way to enable the GUI once it has been disabled. (or reset the password/api key)
3. Some behavior might not be as expected by everyone:
  * Adding an already existing node to a repository throws an error
  * Remove a node that doesn't exist from a repository throws an error

  You might say that it should just assume success by default, but I am not sure about that.
4. Some functions perhaps need more love, as they do the HTTP call first (to get the config for example), and only then do argument validation (which means that we did the HTTP call pointlessly). But I don't really see a good way around it apart from code duplication, or customizing the CLI library code even more.
Well I was really just thinking to break out the functions. But when I've done similar things I've done pretty much what you describe; i.e. one command per file, with each file following a pattern like this (may not compile, typing directly into comment :):

```go
func init() {
  // commands is declared in main.go
  commands = append(commands, cli.Command{
    Name:     "foo",
    // ...
    Action: cmdFoo,
  })
}

func cmdFoo(ctx *cli.Context) {
  //...
}
```