refactor: misc cleanup
feat(DynamicTypeFactories): assert annotations

fixes #58

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.

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

    Module.classAnnotations.add(MyInjectable);
    Module.libAnnotations.add(MyInjectables);
chore(pubspec): release 3.0.0