Migrate to cobra CLI system

Refactored the CLI commands to use [cobra](https://github.com/spf13/cobra). Nothing outside of the `main` package (the CLI entry point/commands) is changed by this PR.

Addresses #111

* Now subcommands automatically get a nice help command when running `ipfs help <cmd>`
* Both long and short flags can be used, e.g. `ipfs add -r` or `ipfs add --recursive`
* Flags can now be defined as either persistent or local. For example the `--config` flag is persistent and can be accessed by any subcommand
i can imagine a func like

```go
func runCommand(cmd ..., addr string, cmdfn CmdFunc) {
   // if daemon exists, use it.
   // if not, setup localNode and run it directly.
}
```
(maybe should be a different PR, just mentioning)