Switch to enable async factory functions returning promises

Passing `{ asyncStyle: 'promise' }` to `container()` makes the returned container promise-based, thus allowing factory functions to return promises and be asynchronous. Thus `deps.get()` and `deps.resolve()` return promises. I chose this way of enabling the switch because maybe we could also add `{ asyncStyle: 'traditional' }` as an option.