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';`.
chore(deps): use es6-shim from master

Because of https://github.com/paulmillr/es6-shim/pull/245
refactor: more readable condition

Wrapping into a promise (when provided non-promise but required a promise) and throwing an error (when required non-promise and provided promise).
chore(deps): es6-shim from NPM

No need to use fixed version from github anymore.
style: normalize empty lines, Inject on class

Conflicts:
	test/injector.spec.js
style: normalize empty lines, Inject on class
fix: instantiate default providers in correct injector

When using default provider (instantiating the token), we should follow the same
policy as with regular (defined/overridden) providers. That is, instantiate in
the oldest injector where defined/overridden, respecting forced new instances
by scope annotations.

Thus each injector has to remember what scopes it forces new instance for so
that when a default provider is being instantiated later, it knows whether it
should be instantiated in the current injector or in a parent one.

Fixes #36
fix: instantiate TransientScope providers in the youngest injector

See the unit test for an example.
refactor: prefix private props with underscore
chore(release): 2.0.0-pre-11