It is not a well-supported feature of the primary node systems (shader, compositor, texture) in Blender. If anybody wants to create a node system that has actual use for loops, they can do so much more elegantly with Python nodes, but it does not have to be a core node type in Blender. Removing this should ease node code maintenance a bit.
The reason is that the per-node updates used for Reroute node type inheritance are not supposed to be looking at connected nodes, they are purely for "local" updates. For this sort of "global" update which requires depth-first search, the update function on the node tree level must be used instead.
1) For inserting into existing groups:
The 'Make Group from selected' (CTRL+g) operator shows a selection popup (like the object parenting operator), with options depending on the type of the active node (last selected):
* "New" -> regular operator, creates new group type with all selected nodes inside.
* "Insert" (only if active node is a group) -> adds all other selected nodes into the group.
Currently still prohibits groups inside groups in general, though would be technically possible as long as no actual recursion occurs (group containing itself).
2) For extracting from an existing group:
New 'Separate from group' operator (p), works similar to separating vertices/edges/faces from mesh. Two modes:
* "Copy" makes a copy of the nodes in the parent tree, but keeps the original group intact.
* "Move" removes selected nodes from the node group and adds them to the parent tree
This branch adds mostly organizational improvements to the node system by renaming the node folders and files. A couple of internal features have been added too.
Detailed information can be found on the wiki page:
http://wiki.blender.org/index.php/User:Phonybone/Particles2010