This Patch is based on: https://developer.blender.org/D10067
Makes links connected to Multi Input Sockets verticaly spread along the socket.
Sockets are growing if more links are connected and Node layout updates accordingly.
Linkes are sorted by angle between fromlink to tolink to avoid crossing links.
link picking is updated to work with spread links and bezier links.
{F9593047}
{F9608211}
**Overview of changes:**
* Adds support for multiple links that are connected to one socket to be drawn with a small gap between
* Adds support for multiple links that are connected to one socket to be sorted by Y position of the from_node
* Adds support for links from Multi Input Sockets being picked by a dragging gesture
* Adds support for links being highlighted while being picked by a dragging gesture
source/blender/editors/space_node/node_relationships.c
source/blender/editors/space_node/drawnode.
* Adds support for node layout changes according to dynamic socket height of Multi Input Sockets.
source/blender/editors/interface/interface_widgets.c
* Changes socket drawing from GL_POINTS to GL_TRIANGLES (using new shader)
* to display long rectangle shape which is not possible with GL_POINTS
* Changes the way the node layout is calculated to work with growing Multi Input Sockets
* Adds a constant for highlight color for links that are being highlighted while being picked by dragging gesture.
* Adds support for links with the flag NODE_LINK_HIGHLIGHT to be drawn with the highlight color.
source/blender/editors/space_node/node_draw.c
* Adds support for mouse cursor can interact with non square sockets in node_find_indicated_socket()
* Adds the function node_socket_calculate_height() to calculate socket height.
source/blender/editors/space_node/node_edit.c
* Adds define for gap between linkes that are connected to Multi Input Sockets NODE_MULTI_INPUT_LINK_GAP */
source/blender/editors/space_node/node_intern.h
* Adds a new shape flag SOCK_DISPLAY_SHAPE_MULTI
* Adds a member to bNodeSocket to store total input linkes
* Adds a member to bNodeLink to store its index on Multi Input Sockets
* Adds a define for the flag NODE_LINK_HIGHLIGHT that is used to store that a link is highlighted on picking gesture*/
source/blender/makesdna/DNA_node_types.h
source/blender/nodes/intern/node_util.c
* Make Multi Input Sockets use the new shape id
source/blender/nodes/intern/node_socket.cc
* Adds a new shader that is used instead of gpu_shader_keyframe_diamond
* and is capable of drawing the new shape in different heights.
source/blender/gpu/CMakeLists.txt
source/blender/gpu/GPU_shader.h
source/blender/gpu/intern/gpu_shader_builtin.c
source/blender/gpu/shaders/gpu_shader_node_socket_frag.glsl
source/blender/gpu/shaders/gpu_shader_node_socket_vert.glsl
* Changes that are needed because signiture of node_draw_socket changes
source/blender/editors/include/ED_node.h