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
Woah, while I'm glad you made sure to close the internal `ContextCloser` (and didn't override without lookin), closing things is precisely what the `ContextCloser` is for. This will leave the datastore open lots of times, when the node is closed automatically from an expiring context.

The right way to do this is to bind a custom `close` function to the ContextCloser. ContextCloser ensures it is called _exactly_ once, _always_.

```
        // where IpfsNode gets constructed (we should move this into a better place perhaps)
	ctx := context.TODO()
	n = &IpfsNode{
		onlineMode:    online,
		Config:        cfg,
	}
        n.ContextCloser = ctxc.NewContextCloser(ctx, n.close)
        // I agree this is **very** clunky. I'm still working on cleaning up this interface.
        // there's a lot of constraints to balance (like making it a non-exported function)

...
func (n *IpfsNode) close() {
	n.Datastore.Close()
}
```