feat: lazy injection
feat: add explicit public interface

- we have explicit public interface (defined in the src/index.js)
- client/node imports are the same

```js
import {Injector, Provide} from 'di';
```
chore(release): 2.0.0-pre-6
chore: fix the release task to build first
chore: fix the set up

- rename assert->rtts-assert
- use deps from src (to avoid "dist" branches)
- declare explicit deps (not through pipe)

Closes #29
chore: add missing karma plugins
Merge branch 'lazy-inject'
feat: transient scope

When a provider is annotated with `TransientScope`, a new instance is
created every time somebody asks for it.

In general, scopes can be used in order to force
new instance (eg. `RouteScope` might force new instance of `Cache`,
per application route, which means a new instance of `Cache` is created
every time a route changes).

`TransientScope` is basically a built-in scope that always forces a new
instance.
chore: npmignore all dotfiles
chore(release): 2.0.0-pre-7
refactor: simplify injector

Injector does not care whether something is provided as a class or
function. It just calls `provider.create(args)` and it's
a responsibility of the concrete provider to instantiate it as a class
or function.

Therefore the whole "super constructor business" is not responsibility
of injector but rather `ClassProvider`. It normalizes parameters of
all the constructors (so that the injector does not care).
refactor: remove un-implemented invoke()

Not sure why the hell I put it there anyway. We might end up needing it,
but not for now...
fix: resolve promise/lazy from parent injector
refactor: move providers into a separate file
refactor(testing): use providers
feat: remove *Annotation aliases
refactor(annotations): use the same parameter description

Normalize the way annotations are parsed and providers describe their
parameters (as long as provide descriptor):
```js
{
  token: <anything>,
  isPromise: <boolean>,
  isLazy: <boolean>
}
```

Also, add more unit tests for `readAnnotations`
style(annotations): just move some code around
style: add some more comments
refactor: remove defaultProvider var