feat(util:context) add error logging to context

This commit...

is a second attempt at: https://github.com/jbenet/go-ipfs/pull/68

partially addresses: https://github.com/jbenet/go-ipfs/issues/66

is the result of discussion at:

    https://gist.github.com/perfmode/f2951c1ed3a02c484d0b
Merge branch 'ipfs-context-2'
feat(bitswap:network) propagate errors up the stack

Rather than pushing errors back down to lower layers, propagate the
errors upward.

This commit adds a `ReceiveError` method to BitSwap's network receiver.

Still TODO: rm the error return value from:

    net.service.handler.HandleMessage

This is inspired by delegation patterns in found in the wild.
feat(net:service, routing) remove error return value
Merge branch 'feat/network-error-propagation-1'
Implement ipfs init -d (change datastore location)
Refactor config file location, add IPFS_CONFIG_DIR

Removed config.Filename and replace it with config.GetConfigFilePath that
takes a configuration directory as argument instead. Makes code simpler.
ipfs.getConfigDir now also return the default configuration dir instead of
an empty string in some cases.
Correct style.
Implemented basic read-only webserver