style: add some more comments
refactor: remove defaultProvider var
refactor: name all anonymous functions

Just to make debugging a bit nicer.
refactor: use annotate()
refactor: rename some variables
fix(async): do not cache TransientScope instances
test: add a test for async dep in a super constructor

Also remove the todo as it got implemented as a side-effect of the
refactoring in f788290a359e4b6e395c73e99367ead0710d75a8.
refactor: more renaming, pass only what really needed into providers