Abstract base class to represent an Operation. Each operation has a
name and description. The name of operation must be unique within all
operations belonging to the same program's field level lineage. Operation
typically has input and output fields. Input field name to the operation
is qualified with the name of the operation(origin) from which it was originated.
It is possible that the field with the same name is generated by two different
operations. Now if you want to use such field as an input to the next operation,
qualifying the field with the origin helps to uniquely identify the operation input.
Outputs are given as plain field names since the name of the operation is implicit in them.