!str #16484 #16392 Remove String identifier of junctions

* descriptive name can still be defined with OperationAttributes.name
* revisit all factory methods (apply/create) and implement and document
  them in a consistent manner

Refs #16484 
Refs #16392
tried that, but then it's not possible to write `val merge = Merge[String]`
then it must be `val merge = Merge[String]()`