feat: do not load modules using keys as string tokens

This was a leftover feature from when we only used string tokens.
I don't think we should support this anymore as we want to recommend
using "default providers" as much as possible. If you wanna use string
tokens, you should explicitly define them using `@Provide('xxx')` - 
the way the house example does it.

This also refactors the tests to not use string tokens.

The only exception is the house example which shows how to use string
tokens.
refactor(example/coffee): import 'di' instead of internals

In the unit tests, we import directly internal modules such as
'../src/annotations'. In the example, we however show how to use DI -
we import the public interface by `import {...} from 'di';`.