Make supplier more pure

Now we have large dirty class `supplier` but useful:

```coffeescript
supply = supplier()
supply.use (supply, callback) ->
    supply.info "hello world"
    supply.use supplier.plugins.express
    supply.set "name", "test"
    callback()
```

I propose extract loader, DI and logger to separate classes.
That make classes more pure but larger initialization:

```coffeescript
di = supplier.di()
loader = supplier.loader(di) # loader constructor have di.set("loader", this) and di.set("logger", supplier.logger())

loader.add (di, callback) ->
    loader = di.get "loader"
    logger = di.get "logger"

    logger.info "hello world"
    loader.add supplier.express()
    di.set "name", "test"
    callback()
```