feat(daemon) `ipfs daemon --initialized`

With this PR, users can fetch and run ipfs in _one_ command.

```
docker run -d -p 4001:4001 -p 5001:5001 jbenet/go-ipfs daemon --initialized
```

Magic.

nb: needs https://github.com/jbenet/go-datastore/pull/9
> Yeah, to mitigate the risk of overriding without looking, it's best to keep things as explicit as possible. I don't think giving the context closer responsibility for synchronous close operations is a good road to follow.

This is the inherent nature of the problem. We have a objects that can be destroyed explicitly, with GC (ContextCloser doesn't do this yet, but it will automatically call `Close` on GC), and as the result of their `Context` expiring (which includes calling `Close` on their parent). In all of these cases, it is critical for `Close` to be _always_ be called _exactly_ once, even if the user calls `Close` 0-N times. Simple `bool` checks do not work in async setting.