feat(Injector): Allow injecting parameterised types.

This change set implements support for injecting parameterised types.
To inject a parameterised type one must wrap it using a TypeLiteral. For example:
```
class DependencyWithParameterizedMap {
  Map<dynamic, dynamic> map;

  DependencyWithParameterizedMap(this.map);
}
```
can be bond using the following syntax:
```
var injector = new ModuleInjector([moduleFactory()
  ..bind(new TypeLiteral<Map<dynamic, dynamic>>().type, toValue: {1 : 'first', 2: 'second'})
  ..bind(DependencyWithParameterizedMap)
  ..bind(DependencyWithMap)
]);
```