Implement dynamic di

This is an initial implementation of DI.

Please review only the second commit. The first commit will be gone once #45 is merged.

Could we add documentation? It is not clear to me what `dependencies` on `async` is for?