feat(Injector): Allow injecting parameterized types.

This change set implements support for injecting parameterised types.
To inject a parameterized type one must wrap it using a TypeLiteral. For
example:

    import 'package:di/type_literal.dart';

    class DependencyWithParameterizedMap {
      Map<int, String> map;
      DependencyWithParameterizedMap(this.map);
    }

    var injector = new ModuleInjector([moduleFactory()
        ..bind(new TypeLiteral<Map<int, String>>().type, toValue: {1 : 'first', 2: 'second'})
        ..bind(DependencyWithParameterizedMap)
    ]);
chore(run-tests): execute the script with bash rather than sh

[[ ]] tests are bash specific
refactor: code cleanup
chore(pubspec): updated dependencies' versions
chore(annotations): remove annotation export
chore(pubspec): release 2.0.2