External augmentations resolution

Augmentations defined in one module and applied in another one are
resolved at runtime.
This allows to create named augmentations library that can be used (i.e.
applied on classes or structs) on other modules, in a mixin/trait
fashion.