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.
my only quip, is that we want to ensure the directory chosen for the datastore is writeable. The config dir doesnt need to be explicitly checked because the write a few lines down will error out if its not alright. The datastore stuff wont error out until later on (when we actually try to write).