Added support for initializer parameters injected as collections

I ran into a situation where I needed to inject a collection to an initialiser so I've added a TyphoonParameterInjectedAsCollection that works much like the TyphoonPropertyInjectedAsCollection.
As I could not find a way to get the type of the initializer argument in runtime both block and xml-style takes a mandatory requiredType.

Along the way I broke out shared functionality and classes for the two and placed these in Component/Collection.

Would much appreciate some feedback. 
Best,
Erik