Complete rename of component->module by renaming related typedefs, type arguments and parameters.
Implement injection scopes, plus some other changes:
* Don't call the virtual destructor when deleting objects if we know the concrete type.
* Don't use an union in ComponentStorage. The union makes it impossible to compare the typeInfo of two ComponentStorage if only one has been created.
* bindInstance() now takes a C& instead of a C*.
* Allow copying injectors (shallow copy).