This is a first step towards the following goals:
- Make it easier to have a dynamic number of sockets in a node.
- Get rid of bNodeSocketTemplate, which is quite annoying to use for some socket types.
- Add support for some type inferencing features.
Right now this patch is designed as a refactor that only focusses on replacing bNodeSocketTemplate with a function that can be called at runtime. Other features will be much easier to build on top of this instead of bNodeSocketTemplate. The rollout of this new approach can be gradual, it can live side by side with bNodeSocketTemplate for a while. Therefore, I don't intend to update all nodes in this patch.