Add the ability to load modules that provide type-safe methods (arguments and return types) corresponding to exposed contract methods to interact with contracts in a type-safe and controlled manner while enjoying dev perks such as coe-completion type lookups etc.