Rework config file location

Implement IPFS_CONFIG_DIR and refactor code to make it simpler. Fix bug in `-c` option handling in `init` subcommand, and add `-c` support to `config` subcommand.

Also add `ipfs init` `-d` option to change default datastore location when initializing ipfs.
I used os.ModePerm (0777). I don't think 0555 is enough, you don't have write permissions.

Talking about permissions, perhaps we should store the private key a little bit more securely (0600 permission for example)