feat(DynamicTypeFactories): assert annotations

fixes #58

By default the dynamic DI will assert that the bound classes are either annotated
with one of `Module.classAnnotations` or listed in the `types` field of one of
`Module.libAnnotations` when assert mode is enabled.

If no annotations is found, `bind()` will throw.

It is possible to disabled the annotation assert with:

    Module.assertAnnotations = false;

`Module.classAnnotations` defaults to `[Injectable]`.
`Module.libAnnotations` defaults to `[Injectables]`.
User defined annotations can be added:

    Module.classAnnotations.add(MyInjectable);
    Module.libAnnotations.add(MyInjectables);