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.
0555 is plenty, ipfs is read only. just make sure you binary OR it with os.ModeDir.

As for making the private key a little more secure, i agree completely. If you want to throw that on this PR, that works for me.